data-race相关内容

在 C++ 中将值从 X 更改为 X 会导致数据竞争吗?

我的代码可以处理具有不同布局的大数据块.布局将决定哪些数据是固定的,哪些数据是不固定的.一旦数据被固定在一个块中,它通常不会再改变.所以所有代码读取数据总会看到相同的数据. 然而,其他服务可能会在这些块中进行更改,只要它们确定没有代码会读取块的那部分.为了简化代码,无论块的布局如何,包含更改的块都将从一个服务发送到另一个服务.然后接收服务将覆盖整个块,包括未更改的数据.让我用一个例子来说明这 ..
发布时间:2021-09-25 20:16:40 C/C++开发

如何保证两个不相关线程中的不同不相关对象没有(不可避免的)竞争条件?

当不同的线程仅使用不相关的对象并且实际上不共享任何东西时,它们就不会具有竞争条件,对吗?显然. 实际上,所有线程共享一些东西:地址空间.不能保证一个线程使用的内存位置不会在其他时间分配给另一个线程.对于动态分配的对象甚至是自动对象的内存,情况可能都是如此:没有规定多个线程的“堆栈"(函数的本地对象)的内存空间是预先分配的(甚至是延迟的),不相交的并且表示为通常的线性“堆栈";它可能是具有堆栈 ..

是什么从形式上保证了非原子变量不会看到空气中的稀疏值,并且创建了像原子弛豫理论上那样的数据竞争呢?

这是有关C ++标准的正式保证的问题. 该标准指出,std::memory_order_relaxed原子变量的规则允许“凭空出现"/“出乎意料"的值出现. 但是对于非原子变量,此示例可以具有UB吗?在C ++抽象机中是否可能使用r1 == r2 == 42?最初都不是变量== 42,因此您不希望if主体执行,这意味着不会写入共享变量. // Global state int x ..
发布时间:2020-04-27 04:23:08 C/C++开发