非常にマルチスレッド化されているアプリケーションで多数のクラッシュに直面しています。
これらのMSDNページ、テクニカルノート、およびTLSに関するこの記事を読んでCWnd
、オブジェクトがスレッドローカルストーガ(スレッド依存のメモリアクセスであるTLS)のHWNDにマップされていることを理解しました。
HWND
CWndスレッドリモートアクセスのように見えるものをすべて分離し、それを参照に変換して::PostMessage
、通信ポートとして使用するつもりでした。
しかし、私の同僚の1人は、私が外国人のスレッドにとどまり、ポリシーCWnd*
を採用しても大丈夫だと本当に主張しましたが、ネイティブを回復するために外国人のスレッドでまたはを使用します。::PostMessage
CWnd::GetSafeHwnd()
pMyCWnd->m_hWnd
HWND
私は、がスレッドセーフであることをどこにも見たことがなく、オブジェクトがTLSにあるため、別のスレッドでの値が異なると主張してきました。GetSafeHwnd()
CWnd
私は間違っていますか?MSDNは明らかに予期しない結果という用語を使用しています。
作成者スレッドからの呼び出しCWnd::GetSafehwnd()
または外部スレッドについて、あなたの見解は何ですか?pMyCWnd->m_hWnd
これが安全かどうかを示すMSDNドキュメントはありますか。