从C ++中的cppreference解释多线程示例

xskxzr

我在cppreference中找到了一个程序

std::atomic<int> x{0};
int a[] = {1,2};
std::for_each(std::execution::par, std::begin(a), std::end(a), [&](int) {
    x.fetch_add(1, std::memory_order_relaxed);
    while (x.load(std::memory_order_relaxed) == 1) { } // Error: assumes execution order
});

“错误:假定执行顺序”一词是什么意思,即该程序的错误是什么?该程序似乎旨在显示僵局,但我看不到。

我知道标题不清楚,但是我真的不知道如何描述问题,因为我找不到程序中的任何错误。对于那个很抱歉。

弗兰克·HB

这个例子来自草稿(例如N4606 [algorithms.parallel.exec] / 3)

[ 例子:

std::atomic<int> x{0};
int a[] = {1,2};
std::for_each(std::execution::par, std::begin(a), std::end(a), [&](int) {
  x.fetch_add(1, std::memory_order_relaxed);
  // spin wait for another iteration to change the value of x
  while (x.load(std::memory_order_relaxed) == 1) { } // incorrect: assumes execution order
});

上面的示例取决于迭代的执行顺序,并且如果两个迭代均在同一执行线程上依次执行,则该实例不会终止。—结束示例]

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从C ++中的文件中多线程读取?

来自分类Dev

在我的C#示例中解释JSON结构

来自分类Dev

C#sqlite中的多线程

来自分类Dev

从tcl线程在C中定义多线程调用函数

来自分类Dev

在多线程c#应用程序中嵌入Python

来自分类Dev

在C中写入文件多线程

来自分类Dev

c。中的多线程 互斥体

来自分类Dev

Python多线程多解释器C API

来自分类Dev

C ++ 11上的类中的多线程

来自分类Dev

多线程在C ++中执行单个任务

来自分类Dev

多线程,用于在C ++中读取和写入SERVER

来自分类Dev

多线程C程序中的随机函数

来自分类Dev

C#中的自制线程池上的多线程死锁

来自分类Dev

C ++中的多线程数据同步

来自分类Dev

C ++类中的多线程非静态

来自分类Dev

C ++中的多线程:联接线程的正确方法

来自分类Dev

C中的多线程服务器(线程丢失)

来自分类Dev

使用pybind11将Python解释器嵌入到多线程C ++程序中

来自分类Dev

C中简单的多线程错误?

来自分类Dev

Windows froms C#中的多线程

来自分类Dev

在Linux中优先使用c的多线程中的“分段故障”

来自分类Dev

chdir()和C中的多线程

来自分类Dev

C#。多线程

来自分类Dev

C ++多线程错误

来自分类Dev

C#中的多线程无法启动

来自分类Dev

在C#中尝试多线程

来自分类Dev

进程与线程:使用示例c#寻找最佳解释

来自分类Dev

C#中的WCF多线程调用

来自分类Dev

C 中的多线程与多处理