スレッド間でイベント ハンドルを共有しているアプリケーションがあります。これらのイベント ハンドルは、シリアル I/O の送信完了および受信データ通知をアプリケーションに通知するために使用されます。ハンドルは、クラス コンストラクターまたは への呼び出しの渡されたパラメーターとして新しいスレッドにコピーされますCreatThread
。これは機能していると思いましたが、これらのイベントが適切に通知されていないように見える奇妙なバグに遭遇しました。DuplicateHandle
これに関数を使用する必要がありますか?もしそうなら、次の使用法は正しいでしょうか?
::DuplicateHandle(
::GetCurrentProcessId(),
hMyHandle,
::GetProcessIdOfThread( hReceivingThreadHandle ),
&hMyDupHandle,
0,
TRUE,
DUPLICATE_SAME_ACCESS
);
残念ながら、マルチスレッドのデバッグは難しいため、このバグについて 100% 確実なことは言えません。ありがとう。