版权声明: https://blog.csdn.net/henysugar/article/details/84680484
问题现象
多线程如果使用pthread来实现tsd,在pthread_key_delete的时候卡死。
原因
pthread_key_delete内部代码有错,lock一次后多次unlock,导致卡住。
...
ptw32_mcs_lock_acquire (&(key->keyLock), &keyLock);
while{
...
// 以下这行不对:
ptw32_mcs_lock_release(&keyLock);
}
...
解决办法
应该改成这样:
...
ptw32_mcs_lock_acquire (&(key->keyLock), &keyLock);
while{
...
}
ptw32_mcs_lock_release(&keyLock);
...
本文结束。