只有互斥鎖的擁有者才能解鎖它。但是,互斥體如何區分鎖定它的線程? Linux中的線程是否有特色?pthread_mutex_unlock如何區分線程?
0
A
回答
3
您可以查看實現源代碼以獲取詳細信息(來自GNU的pthread
實現libc
Git存儲庫可以瀏覽here),但是它們具有內部使用的不同ID。您可以在應用程序級別使用pthread_self()
來查看。它會返回一個pthread_t
值,該值在給定進程內基於每個線程是唯一的。當比較來自不同進程的pthread_t
值時,不保證唯一性。
pthread_t
對應的實際類型是實現定義的,但是;它可以是算術(例如整數)類型,或者它可以是結構。因此,除了使用pthread_equal()
來比較它們的平等之外,你無法用便攜的方式真正做到這一點。
2
它們使用線程標識進行區分;
相關問題
- 1. 區分Java線程和OS線程?
- 2. Spring Batch的分區+線程
- 3. 你如何處理pthread_mutex_unlock失敗?
- 4. pthread_cleanup_push與調用pthread_mutex_unlock
- 5. 差在調用pthread_mutex_unlock
- 6. 在線分區
- 7. 如何區分子進程?
- 8. 如何分配IIS7線程?
- 9. 在playframework中,我如何區分io線程優先於akka actor?
- 10. Spring批處理多線程vs分區
- 11. CUDA線程如何分成經線?
- 12. Android NDK問題pthread_mutex_unlock問題
- 13. pthread_cond_wait和pthread_mutex_unlock是否衝突?
- 14. 如何解決分區範圍分區
- 15. 如何區分這兩個過程?
- 16. 如何區分Multiprocessing.Pool中的進程?
- 17. RANSAC區分線和麪
- 18. 如何分區eMMC?
- 19. 如何在Java中分析線程?
- 20. 如何分析WebLogic線程轉儲?
- 21. OpenMP如何進行線程分配?
- 22. 如何關閉線程分離C++?
- 23. 如何在Windows C++上分離線程
- 24. 如何分析java線程轉儲?
- 25. 如何分開的線程在PHP
- 26. 如何分離CGI中的線程?
- 27. 如何爲多線程分塊質數?
- 28. 在後臺進程中分配和線程有什麼區別?
- 29. C++&boost :: threads - 如何根據工作類型區分線程的優先級?
- 30. 分離線程
關於C中的多線程,C11增加了'threads.h',所以現在基本上C支持比以前更高級別的線程抽象。 – HuStmpHrrr 2015-02-10 16:46:19
N.B.程序員有責任確保只有所有者解鎖一個互斥鎖,通常不需要互斥鎖來驗證正確的線程是否解鎖它。 (在glibc中,所有者的線程ID存儲在互斥鎖中,這對調試很有用,但POSIX不要求這樣做)。 – 2015-02-10 17:23:57
@JonathanWakely:它是遞歸和錯誤檢查互斥體類型所必需的。 – 2015-02-10 18:32:54