我需要編寫
自行車
函數將等於pthread_mutex_trylock(...)
我該怎麼做?
我找不到這個函數的源代碼,即使我找到它們,它們也太複雜,無法複製粘貼。不過,無論如何,我都會爲此鏈接讚不絕口。
我需要編寫一個簡單的函數,如果它沒有被鎖定就可以使用互斥鎖,否則返回。Pthreads。如何檢查互斥鎖已鎖定
0
A
回答
1
我的感覺是,你沒有提供足夠的信息在你的問題。 glibc中實際的pthread mutex實現是一個非常複雜的野獸(它意味着支持許多用例和策略),並且很難適用於訓練任務。
因此,您實際上可能需要做一些不同的事情,然後再深入到pthread互斥體內部。
一種可能性:使用pthread_mutex_trylock
的替代方法可能已足夠。這種替代方案肯定存在,被稱爲pthread_mutex_timedlock
(用0超時調用它)。另一種可能性:您可能需要使用您自己的互斥體實現(基於低級原語,如Linux上的futex
)。這不是太複雜:http://locklessinc.com/articles/mutex_cv_futex/。
相關問題
- 1. pthreads是否支持查詢遞歸互斥鎖的「鎖計數」?
- 2. 鎖定多個互斥鎖
- 3. pthreads互斥鎖斷言錯誤
- 4. Pthreads:主要覆蓋互斥鎖
- 5. 互斥鎖和鎖
- 6. 在範圍鎖定之前檢查可選的互斥鎖
- 7. pthread_cond_wait不解鎖互斥鎖
- 8. 互斥鎖/解鎖命令
- 9. C# - 鎖定互斥鎖問題
- 10. 函數可以鎖定互斥鎖嗎?
- 11. 鎖定互斥鎖的分段錯誤
- 12. 成功的互斥鎖鎖定
- 13. 鎖定互斥鎖vs訪問磁盤
- 14. 自旋鎖VS互斥鎖定睡眠
- 15. 互斥鎖如何工作?
- 16. 在C++ 98互斥鎖中鎖定變量共享數據互斥鎖
- 17. android NDK互斥鎖定
- 18. 檢查一個並行線程互斥鎖定或解鎖(後一個線程已經鎖定本身)
- 19. C++ pthreads - 嘗試鎖定互斥讀取時崩潰
- 20. 如何在NodeJS中鎖定(互斥)?
- 21. Linux互斥鎖檢查程序是否已經在運行?
- 22. pthread_getspecific和互斥鎖
- 23. 釋放互斥鎖。
- 24. 實現互斥鎖?
- 25. pthread互斥鎖兩個線程互鎖鎖定/解鎖是否有效?
- 26. 爲什麼互斥已經解鎖
- 27. 多線程互斥鎖可以使用多個互斥鎖
- 28. boost :: mutex /如何測試一個互斥鎖是否被鎖定
- 29. 如何鎖定初始化程序列表中的互斥鎖?
- 30. PThreads:讀/寫鎖:如何檢查線程是否持有寫鎖?
'int myTryLock(pthread_mutex_t * mutex){return pthread_mutex_trylock(mutex); }'。認真......你想解決什麼問題? – mah
@mah,這是學習任務。我不能使用trylock :( – Alendorff
http://fossies.org/dox/glibc-2.19/pthread__mutex__trylock_8c_source.html有源代碼,它有相當多的代碼,但它是一個單一的函數,它以不同的方式完成它的任務 – mah