我有兩個線程(第一個用於讀取,第二個用於寫入)和一個共享資源(例如數組)。如何保護線程之間的資源? (塊讀取,而第二個線程正在寫)(對不起,英語不好)鎖定資源(線程,C++)
2
A
回答
4
std::mutex裹在std::lock_guard是新手在多線程中最簡單的方法。
事情是這樣的:
class Resource {
public:
T Read() {
std::lock_guard<std::mutex> lock(m_mutex);
// read
}
T Write() {
std::lock_guard<std::mutex> lock(m_mutex);
// write
}
private:
std::mutex m_mutex;
};
+0
謝謝!這就是說,如果互斥鎖已經鎖定(例如在讀取中),寫入將等待(鎖定),然後再次鎖定資源? –
+0
@ЛеонтийХачуев確實如此。 – Starl1ght
相關問題
- 1. c線程和資源鎖定
- 2. 資源爲空時鎖定線程
- 3. C#線程鎖定失敗
- 4. C#線程和鎖定
- 5. 主線程鎖定在C#
- 6. 在C中鎖定線程#
- 7. C#多線程 - 鎖定
- 8. 如何在使用BeginInvoke進行多線程時鎖定資源?
- 9. 線程池共享資源鎖定問題
- 10. Tomcat的線程等待和鎖定同一資源
- 11. 鎖定資源或不在多線程服務器
- 12. 如何使用多線程鎖定資源?
- 13. 在eclipse中鎖定資源
- 14. WP8 Mutex - 資源鎖定
- 15. wxWidgets和鎖定資源
- 16. 資源訪問鎖定PHP
- 17. C++多線程共享資源
- 18. C++ OpenGL多線程緩衝區資源
- 19. C#線程死鎖
- 20. C++線程死鎖
- 21. 在多個線程之間共享和鎖定固定數量的資源
- 22. 非資源死鎖?
- 23. 封鎖CSS資源
- 24. 在Rust中的線程之間共享無鎖資源
- 25. 多線程資源訪問 - 我在哪裏放置我的鎖?
- 26. 3線程鎖定
- 27. 線程鎖定CollectionViewSource
- 28. 鎖定GLSurfaceView線程
- 29. 鎖定多線程
- 30. C#線程鎖定一類的2場
這裏的其他人之間的一種方法:(http://en.cppreference.com/w/cpp/thread/lock_guard)'的std :: lock_guard'] –
使用一個互斥體。這是標準的解決方案。 –
我正在閱讀有關互斥信息。在例子中,互斥鎖在一個函數中阻塞資源。但在我的情況下,這是不同的功能。這對我有幫助嗎? –