gpt4 book ai didi

multithreading - 是否只有真正的并发才能发生某些竞争条件?

转载 作者:行者123 更新时间:2023-12-03 13:19:10 25 4
gpt4 key购买 nike

如果您有一台具有单核的计算机,则可以轻松地处理线程代码带来的各种麻烦。例如,您有:

class A 
{
int always_even = 0;

public:
void doSomething()
{
always_even++;
always_even++;
}
}

然后线程可以越过第一个增量,然后被换出,另一个线程将看到 A违反了不变式。

但是,我对这个问题感到很感兴趣, 是否存在一些竞态条件或并发性错误仅在具有真正并行性的体系结构(即在同一物理时间执行两个或多个线程)的架构上表现出来?

最佳答案

要寻找的关键字是内存屏障和内存模型(或更笼统的术语-一致性模型)。简而言之,当线程在单个内核上切换时,每个线程的读取和写入顺序相同。如果不同的内核/CPU的现金使用不同,则它们的读写顺序可能会有所不同。一旦一种算法取决于内存访问顺序,使用该算法的程序就可以在多核/多CPU机器上显示故障,但在单核/单核计算机上绝不会失败。

关于multithreading - 是否只有真正的并发才能发生某些竞争条件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44741166/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com