0

以下の問題でスレッド間の同期を整理するにはどうすればよいですか?

ライターとリーダーの 2 つのスレッドがあります。どちらも共有リソースで動作します。リーダーがデータ チャンクを要求すると、ライターは書き込みを開始するか、転送が終了すると終了します。次に、すべてのデータ チャンクが書き込まれると、ライターは次のリーダーの要求を待ちます。リーダーは、データ チャンクの準備が整うまで、またはライターが終了するまで待機します。したがって、両方のスレッドの相互排除があります。

言語がサポートしていないため、タスクにyieldなどを使用できません。

W     -----         /---------\
R----/     \--------           --------
4

3 に答える 3

0

セマフォは、データをロックするための「古典的な」方法です。

特定の要件によっては、実際には、新しいバージョンの.Netで提供されている「スレッドセーフコレクション」(System.Collections.Concurrent)の1つを使用した方がよい場合があります。

すべてのスレッドがデータを更新しているわけではない場合は、リーダー/ライターロック(「単純ロック」と比較して)を使用してパフォーマンスを向上させることもできます。

'お役に立てば幸い

于 2013-01-11T19:21:59.713 に答える
0

リーダーライター問題のように聞こえます:

セマフォなどについて聞いたことがある ;)?

http://en.wikipedia.org/wiki/Readers-writers_problem

于 2013-01-11T19:17:07.770 に答える
0

最も簡単な方法は、セマフォを使用することです。.net では、 lockを使用できます。

于 2013-01-11T19:18:26.827 に答える