複数のスレッド間での同一メモリー領域の同期について

[戻る]
鳴海 [E-Mail] 2001/05/15(火) 13:30:55
複数のスレッドで以下の様な処理を行っています。同期がとれずに苦労しています。現象としてはフリーした領域へのアクセス違反など様々な現象がでております。どなたかご存じの方がいましたら宜しくご回答の程お願い致します。
【処理イメージ】
     -------------    ------------    -------------
     | スレッドA  |   | スレッドB  |   | スレッドC |
     |(メモリ追加)|   |(メモリ削除)|   |(メモリ参照)|
     -------------    -------------   -------------
上記各スレッドで使用するメモリーはCPtrArrayです。
 スレッドAはメモリーに追加(GlobalAllocした領域をAdd)します。
 スレッドBはメモリーから削除(GlobalFreeで解放)します。
 スレッドCはメモリーを参照します。
それぞれのスレッドが非同期で動いている状況です。
スレッドAで追加する時にはスレッドB及びスレッドCは待機
スレッドBで削除する時にはスレッドA及びスレッドCは待機
するように処理を行いたいのですが、同期の取り方がわかりません。
このような内容でおわかりになる方がいましたら宜しくお願い致します。

ららら 2001/05/15(火) 13:47:21
スレッド間の同期は、CEvent等の同期オブジェクトを使用すれば
良いです。
WaitForSingleObject等で待ち受けできます。

2001/05/15(火) 14:14:47
Mutexではどうでしょう?

古いスレッドには追加発言できません。