C++ 两个线程,共享几个整数变量

c++ two threads, sharing a few integer variables

本文关键字:几个 整数 变量 共享 线程 两个 C++      更新时间:2023-10-16

我正在编写一个音频效果插件,我对C++相当陌生。

我有一些需要跨两个线程(一个音频处理线程,一个FFT/分析线程(共享的缓冲区的读/写头。

对于大多数这些整数(索引到缓冲区中(,我已经找到了一种方法,只需要一个线程来写入,另一个线程可以简单地读取。但是,一个读取头需要从两个线程中写入。

我关于C++的天真问题是:我应该为这些整数变量使用什么类型?

  1. 国际易失性?
  2. 标准::atomic_int ?

最后一个问题:对于只能在一个地方写入的整数,我可以将它们转换为这些读取线程中的const吗?

谢谢!

  1. int volatile?

不。您需要跨线程同步。volatile不提供您需要的。

  1. std::atomic_int ?

是的。对std::atomic的操作是线程安全的。

最后一个问题:对于只能在一个地方写入的整数,我可以将它们转换为这些读取线程中的 const 吗?

如果在另一个线程中修改了它,则需要同步。强制转换为 const 无济于事。