场景:
我有两个几乎相同的向量。它们的功能就像一个双缓冲区,为单个写入器和多个读取器提供服务。一个向量将由一个线程组读取,而另一个向量将由单个线程写入。在编写器线程完成更新后,它将swap()
两个向量。这样,读者可以在作者准备下一篇的同时继续阅读,而frame
作者可以继续写作而不必担心读者。
问题:
如果在执行过程中保证两个向量的大小相同,swap
那么在进行交换时不使用任何锁定机制是否安全?如果不是,那么确保在编写swap
线程上没有太多开销的情况下确保安全的方法是什么?
场景:
我有两个几乎相同的向量。它们的功能就像一个双缓冲区,为单个写入器和多个读取器提供服务。一个向量将由一个线程组读取,而另一个向量将由单个线程写入。在编写器线程完成更新后,它将swap()
两个向量。这样,读者可以在作者准备下一篇的同时继续阅读,而frame
作者可以继续写作而不必担心读者。
问题:
如果在执行过程中保证两个向量的大小相同,swap
那么在进行交换时不使用任何锁定机制是否安全?如果不是,那么确保在编写swap
线程上没有太多开销的情况下确保安全的方法是什么?