2012-04-23 76 views
0

在Mac OS X上,我有一個生成JSON對象的過程,以及另一個應該消耗它們的間歇過程。 生產者消費者進程彼此獨立。對象的生成次數不會超過每5秒鐘一次,並且通常會有幾百個字節,但有時候可能會變成兆字節。對象應該先進先出。消費者在生產者生產時可能會或可能不會運行,並且可能會立即讀取對象,也可能不會立即讀取對象。Mac OS X上的異步應用程序通信

我愚蠢的解決方案是

  • 創建一個目錄。
  • Producer將每個JSON對象寫入一個文本文件,並將其命名爲一個序列號。
  • 當消費者啓動時,它讀取並刪除序列號順序的文件,並在運行時使用FSEvents來觀察此目錄中是否有新文件到達。

是否有任何容易或更好的方法來做到這一點?

回答

0

假設你希望消費者看到舊的文件,這是因爲剛開始的時候它已經做的方式 - 討厭的,雖然它可能是。

有很多highish高科技的東西,看起來更乾淨 - 但說實話,他們只是往往會增加複雜性和/或部署的基礎設施,添加麻煩。你的建議是有效的,而且效果很好,而且編寫和維護起來很容易。您可能需要某種類型的哨兵文件來跟蹤您正在爲崩潰恢復做些什麼,但這可能是關於它的。

地獄,大多數人會只是睡眠5.輪詢至少你都往上插fsevent。

現在,如果有人accepable失去當聽者不在身邊發生的事件的;而perf是最重要的 - 它可能會變得更有趣。 :)

1

作爲Lion的現代化方法是使用XPC。不幸的是,它沒有很好的文檔。有a broad overview in the Daemons and Services guidea primitive HeaderDoc-generated reference,但引入它的最好方法是從last year's WWDC sessions注意關於它的會話。

隨着XPC,你會不會擔心保持序列號序列,不​​必爭旋轉盤,或是否有足夠的磁盤空間。事實上,你甚至不需要生成和解析JSON數據,因爲XPC的通信機制是圍繞JSON-esque/plist-esque容器和值對象構建的。