我在多线程的应用程序中遇到了这个问题。
主线程产生另一个线程,该线程在内部进行一些内存分配。
//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 的原因是什么?