同步对几乎相同的向量的访问
synchronizing access to almost identical vectors
场景:我有两个几乎相同的向量。它们的功能类似于双缓冲区,为单个写入器和多个读取器提供服务。一个向量将由线程组读取,另一个向量将由单个线程写入。编写器线程完成更新后,它将swap()
两个向量。这样,读者可以在作家准备下一frame
时继续阅读,作者可以继续写作而不必担心读者。
问题:如果在执行swap
期间两个向量的大小保证相同,那么在进行交换时不使用任何锁定机制是否安全?如果不是,那么确保swap
安全而不会在编写器线程上产生太多开销的死亡方法是什么?
这不安全。请注意,即使交换两个值也不是安全的操作。您需要使用互斥锁进行此操作。希望交换是一种成本相对较低的操作(即使您的向量长度不同),因此保护交换应该是可以的。
请记住,交换会使对矢量内容的任何引用无效,这可能会影响读者的设计。
相关文章:
- 尝试通过多个向量访问变量时,向量下标超出范围
- C++从另一个类访问公共静态向量的正确方法是什么
- 访问存储在向量C++中的结构的多态成员
- 如何从静态向量访问类元素?
- 在类 A 中创建类型为 B 类的向量 - 访问数据 [C++] [成员在两个类中都是私有的]
- 从父类的向量访问子类函数,而无需向下转换
- 如何使用常数向量访问成员函数
- 如何从C 向量访问单个单词
- 从C++中传递给函数的指针向量访问矩阵
- 多向量访问与本地对象
- C 迭代器与用于向量访问的指针
- 从向量访问成员功能
- 如何在 c++ 中从 "pointer-to-objects" 向量访问对象
- 如何从双精度向量的向量访问数据
- 从指针向量访问成员函数?C++
- 如何使用SWIG Python从内部向量访问c ++对象方法
- 无法从向量访问对象的getter
- 从向量访问某些类函数C++的问题
- 从基类类型的向量访问派生类方法
- 从对象指针向量访问对象