我有两个线程(第一个用于读取,第二个用于写入)和一个共享资源(例如数组)。如何保护线程之间的资源? (块读取,而第二个线程正在写)(对不起,英语不好)锁定资源(线程,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'] –
使用一个互斥体。这是标准的解决方案。 –
我正在阅读有关互斥信息。在例子中,互斥锁在一个函数中阻塞资源。但在我的情况下,这是不同的功能。这对我有帮助吗? –