线程1调用
func(Pointer *A)
{
mutex.lock();
A->...
mutex.unlock();
}
线程2调用
{
mutex.lock();
delete A;
A = NULL;
mutex.unlock();
}
有没有可能出现一种情况,线程1刚进入函数时(形参A被赋值)后,程序被切换到线程2,A被delete之后再次切回到线程1,导致程序崩溃;
二、函数的返回值
这种情况应该是会出现的……
线程1:
Pointer* __stdcall pointerA()
{
locker(&mutex);
return A;
}
Pointer *A = ponterA();
A->...
线程2:
{
mutex.lock();
delete A;
A = NULL;
mutex.unlock();
}
当线程1:Pointer *A = ponterA()这一行返回时,程序被切换到线程2然后A被delete掉,再回到线程1的时候程序崩溃;