gpt4 book ai didi

multithreading - 线程可以争用对单个地址的访问权吗?

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

取一个 bool 值。一个线程正试图为其分配一个预定值,而与此同时,另一个线程正试图读取它。怎么了?

最佳答案

Take a boolean value. One thread is trying to assign a pre-determined value to it, and at exactly the same time another thread is trying to read it. What happens?



这取决于所讨论的体系结构和语言。实际上,这通常意味着您将具有竞争条件,并且“读取”值可能是旧值或新值。

如果两个线程尝试同时写入同一变量,则更有趣-如果一个线程写入 false而另一个写入 true,则实际生成的变量可能以任何一个值结束。

为了保证正确的访问,需要设置内存屏障。如果处理多个处理器甚至多个内核,则尤其如此,因为在线程写入后需要使CPU高速缓存行无效,以使单独的线程读取值。大多数语言都以一种或另一种形式对此提供支持-例如,在C#中,您可以将变量标记为 volatile来协助完成此任务,但是通常仍需要显式同步(即:锁定)。

另外,如果变量write不是单个CPU指令(即:使用互锁操作或类似操作),则必须注意显式同步读写访问-否则,(在某些体系结构上)您可以在以下位置获取变量:第三,不确定的状态。

关于multithreading - 线程可以争用对单个地址的访问权吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3991201/

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