小编Eug*_*ger的帖子

从可能被不同线程修改的位集(C++)中访问(读取)一点是否安全

这种类型的操作被认为是安全的吗?(换句话说,如果在不同的线程上修改 bitset,则没有机会读取一些虚假的中间值)?具体来说,我只对读取是否安全感兴趣,换句话说,我不是在问从两个单独的线程写入位集是否安全。

例如:无论 bs 中的其他位是否同时被设置/清除,线程 1 能否可靠地获得位 5 的当前状态?

std::bitset<64> bs;

//thread 1:
bool val;
val=bs.test(5);
// ...

//thread 2:
// set/clear a few bits
bs.set(1);
bs.set(3);
bs.set(5);
bs.reset(6);
// ...
Run Code Online (Sandbox Code Playgroud)

c++ stl bit-manipulation thread-safety

5
推荐指数
1
解决办法
974
查看次数

标签 统计

bit-manipulation ×1

c++ ×1

stl ×1

thread-safety ×1