2

私は2つのプロセスを持っています:

Producer
and
Consumer

共通にマッピングされたメモリの共有領域があります

Memory

これで、Producer はメモリにデータを書き込みます。コンシューマはメモリからデータを読み取ります。

I would prefer Consumer not to spin wait with Memory is empty.
I would prefer Producer not to spin wait when Memory is full.

どうすればこれを達成できますか?

4

2 に答える 2

0

ミューテックスの使用はどうですか?リソースが利用可能になるまでミューテックスはスリープするため、スピン待機の問題は発生しません。

于 2010-03-05T21:50:13.037 に答える
0

これは、食事の哲学者問題を連想させます。プラットフォームがサポートしている場合は、複数のプロセスで共有される条件変数を使用できます。 このような共有条件変数を使用すると、データが利用可能な場合は読み取るように通知でき、データが空の場合はその逆になります。偽の wakeupをチェックすることを忘れないでください。ProducerConsumerMemoryMemory

MacOSX pthread 実装がプロセス間で共有される条件変数をサポートしているかどうかを確認する必要があります。方法を判断するには、ミューテックス関連の質問に対する私の回答を参照してください。答えは条件変数にも当てはまります。

于 2010-03-06T00:12:26.420 に答える