2009-04-23 5 views
0

Cocoaでは、2つのNSThreads、1つのプロデューサ、および1つのコンシューマをセットアップしました。 プロデューサはNSMutableDataにデータを追加し、受信者はそのデータからNSInputStreamを開き、チャンクを読み込みます。NSMutableDataからNSInputStreamを読み取ってNSStreamEventEndEncounteredを通知する方法

プロデューサスレッドは、コンシューマプロセスよりも速く書き込みます。これは問題ありません。しかし、生産者は限られた量の仕事しか生産せず、出て行く。消費者スレッドがNSStreamEventEndEncounteredイベントを処理するようにしたいと思います。 NSInputStreamがNSMutableDataから来た場合、これをどのように伝えることができますか?

プロデューサにストリームの終わりを示す魔法の数字で一連のバイトを送信させるだけでいいですか?

答えて

1

プロデューサはNSMutableDataにデータを追加し、受信者はそのデータからNSInputStreamを開き、チャンクを読み込みます。

これは動作しません。 the -initWithData: documentationから:

dataの内容がコピーされます。

意味するところは、データオブジェクトにデータを追加するときに、データオブジェクトの内容に従わずに、その時点でデータオブジェクトにあるものをすべてコピーします。

(同じことが+inputStreamWithData:のために行く。)

ではなくpipeを試してみてください。

関連する問題