使用不同线程共享数据的最快方法?

时间:2013-04-15 01:52:07

标签: c multithreading openmp race-condition

使用Open MP考虑以下场景:

我们有一个指针A指向内存中非常大的缓冲区,我们有几个线程,一个线程(让我们称之为线程#1)继续更新A中的内容,而其他线程,基于#1控制的信号,处理A中存储的数据。

这是确保最快的方法(假设告诉其他线程正确复制A的时间的信号是原子的,因此没有竞争条件):

  1. 处理数据的线程将始终使用udpated数据(例如,没有某些数据的风险被缓存在寄存器等中)。

  2. 表现良好。

1 个答案:

答案 0 :(得分:2)

您可以尝试读写锁定。线程#1保持写锁定,其他线程保持读锁定。这样所有其他线程就可以并行读取,只有读取和写入是互斥的。