gpt4 book ai didi

multithreading - 什么是新手的原子操作?

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

我是操作系统的新手,我在 Stackoverflow 上找到的每个答案都非常复杂,我无法理解。有人可以解释一下什么是

atomic operation



对于新手?

我的理解:我的理解是 atomic operation意味着它完全执行 无中断 ?即,它是 阻塞 没有中断范围的操作?

最佳答案

差不多,是的。 “Atom”来自希腊语“atomos”=“uncutable”,长期以来一直被用作“不可分割的最小单位”的意思(直到物理学家发现,实际上还有比原子更小的东西)。在并发编程中,这意味着在此期间不会有上下文切换——没有什么可以影响原子命令的执行。

一个例子:网络投票,开放式问题,但我们想总结一下有多少人给出了相同的答案。您有一个数据库表,您可以在其中插入答案和该答案的计数。代码很简单:

get the row for the given answer
if the row didn't exist:
create the row with answer and count 1
else:
increment count
update the row with new count

或者是吗?看看当多人同时做时会发生什么:
user A answers "ham and eggs"       user B answers "ham and eggs"
get the row: count is 1 get the row: count is 1
okay, we're updating! okay, we're updating!
count is now 2 count is now 2
store 2 for "ham and eggs" store 2 for "ham and eggs"

“火腿鸡蛋”虽然有2人投了票,但只跳了1分!这显然不是我们想要的。如果只有原子操作“如果存在则增加或创建新记录”......为简洁起见,我们称之为“upsert”(用于“更新或插入”)
user A answers "ham and eggs"       user B answers "ham and eggs"
upsert by incrementing count upsert by incrementing count

在这里,每个 upsert 都是原子的:第一个保留为 2,第二个保留为 3。一切正常。

请注意,“atomic”是上下文相关的:在这种情况下,upsert 操作只需要对数据库中的 answers 表的操作是原子的;计算机可以自由地做其他事情,只要它们不影响(或受其影响)upsert 试图做的结果。

关于multithreading - 什么是新手的原子操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52196678/

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