4

我在多线程的应用程序中遇到了这个问题。

主线程产生另一个线程,该线程在内部进行一些内存分配。

//Main thread
if(p) {
   Thread th1(TestFunc, 0);
}

//TestFunc in thread.
unsigned long TestFunc (void * param)
{

     //Do some memory allocation.

}

看起来两个线程都在等待对方。

主线程的调用栈是:

_OSSpinLockLockSlow
GMFree
operator delete (void *)
Thread:: ~Thread ()
Thread:: ~Thread ()

对于生成的线程

 _OSSpinLockLockSlow
 GMmalloc_zone_malloc_internal

这是问题的示例代码。

看起来主线程和衍生线程都在等待对方。

这个 _OSSpinLockLockSlow 的原因是什么?

4

0 回答 0