スレッドパラメータとして 'this'ポインタを持つ4つのスレッドがあります。 これらのスレッドでは、reinterpret_casted thisポインタを使用して同じメンバ関数を呼び出しています。このメンバ関数は、読み込み専用のメンバ変数(非静的)を使用します。しかし、アプリケーションがクラッシュし、クラッシュダンプは、スレッドからメンバー関数を呼び出すときにアプリケーションがクラッシュしたことを示します。異なるメンバー変数を修正スレッド2にスレッド同期とメンバ関数
DWORD MyClass::Thread1(LPVOID ParamPtr)
{
MyClass* MyClassPtr = reinterpret_cast<MyClass*>(ParamPtr);
for(i......)
{
for(j.....)
{
// a.b.c are local variables
MyClassPtr->MyFunc(a, b, c); <- Crashed
...............
MyClassPtr->member1 = 1;
}
}
}
同様コード、Thread3 & Thread4。
これは確かにC++に似ていますが、非標準型のリベラルな使い方は、あなたが同期しようとしているのは 'std :: thread'ではないことを容疑者にしています。タグに刺し傷がありましたが、私が間違っていれば私を修正してください。 – MSalters
MCVEはこれに簡単に答えます –