你如何原子地设置一个字节的位?我要解决的问题涉及更新大量字节数组,例如 uchar data[262144]。我使用 SET(index,value) 一次只设置一个字节的 2 位,这意味着四个线程可以同时在一个字节中设置值。线程选择相同的字节进行更新是非常罕见的,但确实会发生。使这些操作线程安全的最有效方法是什么?请注意,我不能为每个数据条目使用一个锁,这会太大太慢。
更糟糕的是,有时另一个字节数组 data1[131072] 也需要以线程安全的方式与先前的数据同时更新。但我计划合并这两个数组以简化问题,因此更新第一个数组的原子方式就足够了。