1. 程式人生 > >pthread-2.9.1有關tsd的bug

pthread-2.9.1有關tsd的bug

問題現象

多執行緒如果使用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); 
...

 

 

 

 

本文結束。