我有一个类型的共享变量double
。这个变量将被两个线程访问。一个线程永远只会写入变量,而另一个线程永远只会读取变量。
我仍然在这里获得比赛条件吗?如果是,在 C++ 中是否有一种“简单”的方式来实现原子访问?如果读取比写入多得多,我如何有效地实现它?我需要将变量标记为volatile
吗?
编辑:好的,“阅读器”线程定期处理批量数据,并且新值的传播不是时间敏感的。与其实现我没有好方法测试的复杂联锁,我可以只声明编写器线程将写入的另一个临时变量。然后,当阅读器完成一批时,它可以将临时值自动传播到实际变量。那将是无竞争条件的吗?