У меня есть четыре потока с указателем 'this' как параметр потока. В этих потоках я вызываю одну и ту же функцию-член, используя reinterpret_casted this pointer. Эта функция-член использует переменные-члены (не статические) только для чтения. Но приложение потерпело крах, и дамп сбоя показал, что приложение разбилось при вызове функции-члена из потоков.Thread Synchronization and member function
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;
}
}
}
Аналогичный код в thread2, Thread3 & Thread4, который изменяет различные переменные-члены.
Это похоже на C++, но либеральное использование нестандартных типов делает моего подозреваемого не «std :: thread», который вы пытаетесь синхронизировать. У меня был удар по тегам, пожалуйста, поправьте меня, если я ошибусь. – MSalters
MCVE так легко ответить –