回答
互斥體只能由鎖定它的同一個線程解鎖。違反此規則的程序有未定義行爲並且不便攜或不穩定;它有時可能會工作,並在其他時間出現可怕的失敗,在稍微不同的系統上編譯,在月球的不同階段或升級後。
如果您確實需要這種行爲(鎖定一個線程並通過另一個線程解鎖),信號量可能會滿足您的需求。信號量沒有所有者,任何線程可能幾乎在任何時候都會調用sem_post
或sem_wait
。
鎖定一個線程並在另一個線程中解鎖是一種不好的做法,因爲這需要兩個線程彼此通信。一個線程應該執行自己的鎖定和解鎖。
從一個線程鎖定並從另一個線程解鎖永遠不是好習慣。這個名字說明了這一切 - 相互排斥。需要它的線程持有它直到完成。
http://www.manpagez.com/man/3/pthread_mutex_unlock/
(也是從POSIX規範網站:http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutex_lock.html)
如果當前線程持有互斥鎖,然後將 調用pthread_mutex_unlock()函數解鎖互斥。
調用帶有互斥體的pthread_mutex_unlock()調用線程 不保留將導致未定義的行爲。
+1的正確答案,但我建議引用[POSIX規範](http://pubs.opengroup.org/onlinepubs/9699919799/functions/pthread_mutex_lock.html)而不是「manpagez.com」 。 (規範是規範的。) – Nemo
- 1. pthread互斥鎖兩個線程互鎖鎖定/解鎖是否有效?
- 2. 使用互斥鎖的pthread同步
- 3. Pthread互斥鎖斷言失敗
- 4. 互斥鎖/解鎖命令
- 5. Pthread互斥VS Solaris中
- 6. 使用pthread互斥鎖(linux)調試死鎖
- 7. 互斥鎖和鎖
- 8. 健壯的pthread互斥鎖 - 跨平臺的可移植性
- 9. pthread互斥鎖在macOS上無法正常工作
- 10. 實現互斥鎖?
- 11. 爲什麼互斥已經解鎖
- 12. 互斥鎖的順序
- 13. 南特的互斥鎖
- 14. 解鎖從定時接收互斥解鎖
- 15. PThread互斥不作爲希望
- 16. 關於pthread互斥使用情況
- 17. 可以在Qt 5.4中解鎖兩次互斥鎖嗎?
- 18. 鎖定互斥鎖的分段錯誤
- 19. 成功的互斥鎖鎖定
- 20. 如何找出哪個線程在互斥鎖上有鎖?
- 21. 互斥鎖與線程鎖。使用哪個?
- 22. 互斥理解
- 23. pthread_cond_wait解鎖附帶的互斥鎖。源代碼?
- 24. 鎖,監視器,互斥
- 25. 互斥鎖無數次
- 26. 「安全」處理互斥鎖?
- 27. 當互斥鎖不夠時?
- 28. 互斥鎖不起作用
- 29. 需要釋放互斥鎖?
- 30. C - 互斥鎖屬性
這個問題不是很好,但它爲什麼值得-1? +1來補償.. –