gpt4 book ai didi

multithreading - 多线程阅读中的竞争条件怎么样?

转载 作者:行者123 更新时间:2023-12-04 02:06:22 25 4
gpt4 key购买 nike

根据 an article在 IBM.com 上,“竞争条件是两个或多个线程或进程正在读取或写入某些共享数据的情况,最终结果取决于线程如何调度的时间。竞争条件可能导致不可预测的结果和微妙的程序错误。” .虽然这篇文章是关于 Java 的,但我一般都被教导了相同的定义。

据我所知,从RAM读取的简单操作包括设置特定输入线(地址,读取等)的状态和读取输出线的状态。这是一个显然不能由两个设备同时执行而必须串行化的操作。

现在让我们假设我们有一个情况,当几个线程访问内存中的对象时。理论上,这个访问应该被序列化以防止竞争条件。但是例如读者/作者算法假定任意数量的读者可以同时使用共享内存。

所以,问题是:在使用多线程(例如在 WinAPI 中)时,是否必须为读取实现排他锁?如果不是,为什么?这个控制在哪里实现 - 操作系统,硬件?

最好的问候,
库巴

最佳答案

在硬件级别读取内存是按顺序完成的 - 您无需担心此级别的并发性。两个线程发出读取指令和所有必要的东西 - 在地址总线上设置地址和实际读取由内存访问硬件以读取始终正常工作的方式实现。

事实上,对于读/写场景也是如此,只是当读和写请求交错时,您将根据时间获得不同的结果,这就是您需要同步的原因。

关于multithreading - 多线程阅读中的竞争条件怎么样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2691112/

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