2012-04-23 7 views
0

Mac OS Xでは、私はJSONオブジェクトを生成するプロセスと、それらを消費する断続的なプロセスを持っています。 プロデューサおよびコンシューマプロセスは互いに独立しています。オブジェクトは5秒ごとに生成されることは多くありません。通常は数百バイトになりますが、時にはメガバイトになる場合もあります。オブジェクトは先入れ先出しで通信する必要があります。消費者は生産者が生産しているときに稼動しているかもしれないし、稼働していないかもしれないし、すぐに物を読むかもしれない。Mac OS Xでの非同期アプリケーション間通信

私boneheadedソリューションは、ディレクトリを作成

  • です。
  • Producerは各JSONオブジェクトをテキストファイルに書き込み、シリアル番号を付けて名前を付けます。
  • コンシューマーが起動すると、シリアル番号順にファイルが読み込まれてから削除され、実行中にFSEventsを使用して、このディレクトリで新しいファイルが到着するのを監視します。

これを行う方法はありますか?

答えて

0

消費者が古いファイルを見たいと思えば、これは時間の始めから行われている方法ですが、嫌になるかもしれません。

洗練された見た目のハイテクなものがたくさんありますが、正直なところ、複雑さや導入インフラストラクチャを追加するだけで、手間がかかります。あなたが提案したものはうまく動作し、書き込みと保守は簡単です。あなたはクラッシュリカバリのために何をしているのかを追跡するために何らかのセンチネルファイルが必要になるかもしれませんが、それはおそらくそれです。

地獄は、ほとんどの人が睡眠と投票するだけです。少なくとも、あなたはすべてfseventのすべてです。

ここで、リスナーが周囲にいなかったときに生成されたイベントを失うことがあった場合、 perfが最も重要だった - それはもっと面白くなるかもしれない。 :)

1

これを行うための現代的な方法は、ライオンのように、XPCを使用することです。残念ながら、それについての良い文書はありません。 a broad overview in the Daemons and Services guidea primitive HeaderDoc-generated referenceがありますが、それについて紹介するには、last year's WWDC sessionsからセッションを見ることが最善の方法です。

XPCを使用すると、シリアル番号のシリアル化、スピンディスクの競合、ディスク容量の不足などを心配する必要はありません。実際、XPCの通信メカニズムはJSON-esque/plist-esqueのコンテナオブジェクトと値オブジェクトの周りに構築されているため、JSONデータを生成して解析する必要はありません。

関連する問題