當一個線程1已經獲取了互斥鎖對象時,如果線程2試圖獲取對同一個互斥對象的鎖,則線程2將被阻塞。 這裏是我的問題: 1. thread2如何知道互斥對象被解鎖? 2.將線程2嘗試獲取鎖定在預先設定的時間間隔?有關pthread_mutex_lock的一些問題
0
A
回答
0
這實際上是與操作系統有關的,但通常情況是thread2被暫停並放在由互斥鎖維護的等待列表中。當互斥體變爲可用時,互斥體等待列表上的線程將從列表中移除並放回到活動線程列表中。操作系統可以像往常一樣安排它。 thread2完全靜止,直到它可以獲取互斥量。
1
我感覺到對互斥體如何工作的誤解。當線程2嘗試獲取已由線程1擁有的互斥體時,嘗試接受互斥體的調用不會返回,直到互斥體變爲可用(除非您的trylock()變體有超時)。
因此,線程2不需要在那裏循環,並繼續嘗試採取互斥體(除非您使用超時,因此您可以基於其他條件取消互斥體,如取消條件)。
+0
我的解釋是OP在詢問有關互斥體本身的實現。 – mschaef 2010-06-23 15:26:21
+1
@mschaef:很可能你是對的。根據問題的措辭很難說OP的理解水平。 – 2010-06-23 15:37:40
相關問題
- 1. 關於pthread_mutex_lock和pthread_mutex_unlock的一些問題
- 2. 有關NHibernate的GuidCombGenerator的一些問題
- 3. boost線程pthread_mutex_lock問題
- 4. 有關linux信號的一些問題
- 5. 有關TestComplete的一些問題
- 6. 有關TeamCity的一些問題
- 7. 有關緩存的一些問題
- 8. 有關mexLasso功能的一些問題
- 9. 有關Qt pro-file的一些問題
- 10. 有關posix_memalign的一些問題
- 11. 有關Facebook Score API的一些問題
- 12. 有關UIScrollView的一些問題
- 13. 有關Grails服務的一些問題
- 14. 有關OAuth和Android的一些問題
- 15. 有關$ GOPATH的一些問題
- 16. 有關JavaScriptSerializer的一些問題
- 17. 有關iTextSharp的一些問題
- 18. 一些與IPv6有關的問題
- 19. 有關System.Threading.Timer和Parallel的一些問題
- 20. 有關OpenLayers的一些問題
- 21. 有關SQL組的一些問題
- 22. 有關內存/ malloc的一些問題
- 23. 有關Java的一些基本問題
- 24. 一些問題有關異常處理
- 25. 有關解決multiplier問題的一些問題Spring View Resolvers
- 26. 關於關注WPF的一些問題
- 27. 有關C++開發人員有關C++的一些問題
- 28. 有一些問題 「的console.log」
- 29. 關於iptables的 「-set-xmark」 有些問題
- 30. 關於Perceptron的一些問題
@all 謝謝你們 – lakshman 2010-06-24 05:41:12