2012-02-04 81 views
0

我有兩個線程(通過pthread_create創建)。他們是join - 可用線程(不分離)。 但我沒有做pthread_join對他們,錯我知道,但問題不是這樣。 線程共享堆中的數據結構,其中包含互斥鎖。 只有鎖定它的線程才能解鎖互斥鎖。pthreads互斥鎖斷言錯誤

我在某些隨機情況下出現跟隨錯誤。

pthread_mutex_lock.c:62: __pthread_mutex_lock: Assertion `mutex->__data.__owner == 0' 

問題是,在這種情況下,如果線程2適當解鎖互斥量並不會pthread_destroy,並通過exit(1)死了,現在這在線程試圖pthread_destroy後鎖定同一互斥體,你會得到「這個」錯誤或其他錯誤?

回答

2

當您違反規則時,您得到的錯誤取決於平臺。所以你必須自己測試才能確定。這是一個「你不能嘗試這個」的條件,所以當你做這件事時沒有什麼必然發生的規則。