マルチスレッドの終了の仕方について質問があります。
ループ処理を実行中のスレッドを他のスレッドから
ループ処理の条件以外で終了させたいのですが
TerminateThread()を使用して強制終了させると
メモリーリークが発生する可能性があるようなんで
他の方法を探しています。
やはりループの中身にPeekMessage()を使用し終了メッセージが
あるかチェックするしか方法は無いのでしょうか?
その場合PeekMessage()の呼び出し位置以降で
終了メッセージを受けると次のPeekMessage()まで待たないと
行けないですよね。
即、終了させる方法はないでしょうか?
ポーリングなら PeekMessage を複数挿入して頻度を上げる。
そのループがブロッキングできる作りなら
MsgWaitForMultipleObjectsEx や
WaitForMultipleObjects で待機。Event で通知する。
ツイート | ![]() |