写入互斥的共享资源
Writing to a mutex'ed shared resourced
本文关键字:共享资源 更新时间:2023-10-16
我有一个C++列表,它正在由多个线程处理。
每个线程在列表上创建一个pthread_mutex_lock
,这样其他线程就不会"干扰"列表。作为处理的一部分,每个线程还push_back
列表上的数据。
我的问题是,互斥列表上的push_back
是个坏主意吗?当线程在列表中添加更多数据时,互斥对象仍然有效吗?我在pthread_mutex_lock
上看到的大多数文档/示例都只是在"阅读",所以我很想知道在共享资源上获取锁和写入的同一个线程会发生什么。
只要只有那个特定的线程持有锁,并且没有其他线程可以使用这个锁,那么写应该是可以的。想想为什么会出现问题?如果一个线程在写,另一个线程同时在读,那将是一个问题。如果球是你的,你可以用它做任何事情,对吗?事物在共享时会发生变化。
对于整个线程组,互斥锁必须是唯一的(即所有线程都必须使用相同的互斥锁)。如果你为每个线程创建了一个互斥,那么你根本就不是线程安全的,因为每个线程都会等待自己的互斥,而不会与其他线程同步
是的,获取的互斥可以安全地用于读写。
相关文章:
- 拥有或在对象之间共享资源
- 在新作用域中使用unique_lock是否等效于在使用共享资源的工作结束时解锁调用
- 是否有一种设计模式或面向对象的基本原则来处理这种共享资源的情况?
- 多线程和共享资源:使用C++定期将数据从缓冲区(数据结构)复制到文件
- 为什么我的程序寻找共享资源.dll而不是Commons.lib
- 多个线程访问共享资源
- C++11 中 3 个线程和 2 个共享资源的同步问题
- 锁定构造函数和析构函数中的共享资源
- qtmake-两个项目/目标之间的共享资源
- 在多线程程序中共享资源 C++ 与 Java
- C++/提升共享资源类,用于管理资源生命周期,如shared_ptr
- 高效读取共享资源
- 从DirectX11到Directx9共享资源
- 使用 std::weak_ptr 共享资源所有权
- 如何将共享资源对象的生存期绑定到其用户生存期的联合中?
- 线程共享资源C++
- CppUtest在测试之间共享资源,未定义引用
- 共享资源,如带宽同步
- 写入互斥的共享资源
- 参数化和共享资源测试在googletest