使用Open MP考虑以下场景:
我们有一个指针A
指向内存中非常大的缓冲区,我们有几个线程,一个线程(让我们称之为线程#1)继续更新A
中的内容,而其他线程,基于#1控制的信号,处理A
中存储的数据。
这是确保最快的方法(假设告诉其他线程正确复制A
的时间的信号是原子的,因此没有竞争条件):
处理数据的线程将始终使用udpated数据(例如,没有某些数据的风险被缓存在寄存器等中)。
表现良好。
答案 0 :(得分:2)
您可以尝试读写锁定。线程#1保持写锁定,其他线程保持读锁定。这样所有其他线程就可以并行读取,只有读取和写入是互斥的。