我有四個線程,'this'指針作爲線程參數。 在這些線程中,我使用reinterpret_casted這個指針調用相同的成員函數。此成員函數使用成員變量(非靜態)僅用於讀取。但是應用程序崩潰並且崩潰轉儲顯示從線程調用成員函數時應用程序崩潰。線程同步和成員函數
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;
}
}
}
類似的代碼在線程2,Thread3 & Thread4其中修改不同成員變量。
這看起來確實像C++,但是非標準類型的自由使用使得我懷疑它不是你試圖同步的'std :: thread'。我刺戳了標籤,如果我猜錯了,請糾正我。 – MSalters
MCVE可以很容易回答 –