相关疑难解决方法(0)

std :: lock_guard或std :: scoped_lock?

C++ 17引入了一个名为的新锁类std::scoped_lock.

从文档来看,它看起来与现有的std::lock_guard类相似.

有什么区别,什么时候应该使用它?

c++ multithreading locking c++17

106
推荐指数
4
解决办法
2万
查看次数

我什么时候真的需要使用原子<bool>而不是bool?

不是atomic<bool>多余的,因为bool它本质上是原子的吗?我认为不可能有部分修改的bool值.我什么时候真的需要用atomic<bool>而不是bool

c++ atomicity c++11 stdatomic

80
推荐指数
6
解决办法
5万
查看次数

获取发布内存顺序与顺序一致性不同的实际示例是什么?

显然,顺序一致的原子操作的有效可观察行为与有效C++程序中的仅获取释放操作不同.定义在C++标准(自C++ 11以来)或此处给出.

但是,我从来没有遇到过一个算法或数据结构的真实例子,其中获取 - 释放语义不足并且需要顺序一致性.

什么是真实世界算法或数据结构的实际例子,其中需要顺序一致性并且获取 - 释放内存顺序是不够的?

注意,即使std::mutex不保证顺序一致性.

c++ multithreading atomic memory-model c++11

7
推荐指数
1
解决办法
695
查看次数

我是否应该期望 C++ 编译器会使用“按编码”进行数据竞争来编译多线程代码,还是可能会产生其他结果?

让\xe2\x80\x99s 说我有一个硬件,在该硬件上,所有对内存的访问都小于或等于大小bool都是线程安全的,并且由于硬件或代码而避免了与缓存有关的一致性问题。

\n

我是否应该期望从多个线程对同一对象的非原子访问将仅编译 \xe2\x80\x9cas coded\xe2\x80\x9d ,以便我获得该平台的线程安全程序?

\n

c++ multithreading undefined-behavior c++11

0
推荐指数
1
解决办法
580
查看次数