0

Mac OS X では、JSON オブジェクトを生成するプロセスと、それらを消費する別の断続的なプロセスがあります。プロデューサープロセスとコンシューマープロセスは互いに独立しています。オブジェクトは 5 秒ごとに生成されることはなく、通常は数百バイトですが、場合によってはメガバイトに及ぶこともあります。オブジェクトは先入れ先出しで通信する必要があります。コンシューマーは、プロデューサーが生成しているときに実行されている場合と実行されていない場合があり、オブジェクトをすぐに読み取る場合と読み取らない場合があります。

私の骨の折れる解決策は

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

これを行うためのより簡単またはより良い方法はありますか?

4

2 に答える 2

1

これを行う最新の方法は、Lion では XPC を使用することです。残念ながら、適切なドキュメントはありません。Daemons and Services ガイド基本的な HeaderDoc 生成リファレンスに幅広い概要がありますが、それを紹介する最善の方法は、昨年の WWDC セッションからそれに関するセッションを見ることです。

XPC を使用すると、シリアル番号をシリアルに保つこと、回転するディスクをめぐって競合すること、または十分なディスク容量があるかどうかについて心配する必要がなくなります。実際、XPC の通信メカニズムは JSON 風/plist 風のコンテナーと値オブジェクトを中心に構築されているため、JSON データを生成して解析する必要さえありません。

于 2012-04-24T04:43:40.273 に答える
0

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

見た目がすっきりしているハイテクなものはたくさんありますが、正直なところ、それらは複雑さを追加したり、面倒な展開インフラストラクチャを追加したりする傾向があります。あなたが提案することはうまくいきます、そしてそれはうまくいきます、そしてそれは書きそして維持するのが簡単です。クラッシュリカバリのために何をしているかを追跡するために、ある種のセンチネルファイルが必要になる場合がありますが、それはおそらくそれだけです。

地獄、ほとんどの人はただ睡眠5で投票するでしょう。少なくともあなたはすべてfseventにいます。

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

于 2012-04-23T21:34:11.953 に答える