- - PR -
C++ スレッド間の排他制御について
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-04-24 22:27
あれれ?
このコード、本当に意図通りに動きますか? まぁ、動くにしても、
とかでいいのでは? | ||||||||||||
|
投稿日時: 2008-04-25 18:53
>Jitta さま
質問した当初のコードでは、意図通りに動いてませんでした。 実行時にmain関数がループし続けて処理Aだけをひたすら実施し、 スレッド内の処理Bが遅れて実行される、ということがありました。 あと、むやみに if〜else ifを多用するよりはswitch文のほうが簡潔にかけますね。 この点は、気づいていませんでした。 | ||||||||||||
|
投稿日時: 2008-04-28 21:39
ん?たぶん、こちらの意図が正しく伝わっていないかも。 私の意図は、次のように、if を並べたものでもかまわないのですよ。
最初の if 文で、m_hEvent が終了するまで待つ。このとき、戻り値が WAIT_OBJECT_0 でなければ、また WaitForSingleObject 関数を実行することになっています。このときの戻り値が気になります。最初の if で WAIT_ABANDONED だった場合、次の呼び出しも WAIT_ABANDONED になるのでしょうか。ならないのなら、意図通りに動かないですよね? 同じようなことを、他の関数でもやっていませんか? |