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); 
...

 

 

 

 

本文結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章