Concurrency 无等待的定义(参考并行编程)

Concurrency 无等待的定义(参考并行编程),concurrency,terminology,Concurrency,Terminology,在Maurice Herlihy的论文“无等待同步”中,他定义了无等待: “并发数据对象的无等待实现可以保证 任何进程都可以在有限的步骤内完成任何操作,无论 其他进程的执行速度。” 让我们从宇宙中进行一次行动 (1) 这个定义是否意味着:“每个进程在相同的有限n个步骤中完成一个特定的操作op。” (2) 或者它的意思是:“每个进程在任何有限的步骤中完成一个特定的操作op。因此一个进程可以在k个步骤中完成op,而另一个进程可以在j个步骤中完成op,其中k!=j.” 只要读一下定义,我就能理解(2

在Maurice Herlihy的论文“无等待同步”中,他定义了无等待:

“并发数据对象的无等待实现可以保证 任何进程都可以在有限的步骤内完成任何操作,无论 其他进程的执行速度。”

让我们从宇宙中进行一次行动

(1) 这个定义是否意味着:“每个进程在相同的有限n个步骤中完成一个特定的操作op。”

(2) 或者它的意思是:“每个进程在任何有限的步骤中完成一个特定的操作op。因此一个进程可以在k个步骤中完成op,而另一个进程可以在j个步骤中完成op,其中k!=j.”

只要读一下定义,我就能理解(2)的意思。然而,这对我来说毫无意义,因为一个进程以k个步骤执行op,另一个时间以k+m个步骤执行op符合定义,但是m个步骤可能是一个等待循环。如果意思(2)是正确的,谁能向我解释一下,为什么这描述了无等待

与(2)相反,意思是(1)将保证以相同的步骤k执行op。因此,不可能有任何额外的步骤m是必要的,例如在等待循环中

哪个意思是正确的,为什么

非常感谢


这个答案意味着定义(2)。如果等待的进程无限期地运行,那么等待循环可能永远不会终止:“不管其他进程的执行速度如何”。
因此,无限等待循环实际上意味着一个给定的进程可能无法在有限的步骤内完成一个操作。

当这样一篇理论论文的作者写下“有限的步骤数”时,这意味着存在一些常数
k
(你不一定知道
k
),因此,步骤数小于
k
(即,您的等待时间肯定不会是无限的)

我不确定“op”在这个上下文中是什么意思,但一般来说,当您有一个多线程程序时,线程可能会等待其他线程执行某些操作

示例:一个线程有一个锁,其他线程等待释放这个锁,直到它们可以操作为止

这个示例不是无等待的,因为如果持有锁的线程没有机会执行任何操作(这是不好的,因为这里的要求是其他线程将继续,而不管其他线程如何),那么其他线程将注定失败,并且永远不会取得任何进展

其他示例:有多个线程试图在同一地址上运行


这个示例是无等待的,因为尽管除一个线程外的所有线程都会在这样的操作中失败,但无论选择运行哪个线程,都会有进展。

无等待本质上意味着它不需要在多处理环境中使用同步。“有限步数”指的是,当另一个进程执行关键部分时,不必在同步设备(例如互斥)上等待未知且可能无限(死锁)的时间长度。

听起来您担心定义2会允许无限等待循环,但是这样一个无限循环不能满足在有限步数内完成的要求

我认为“无需等待”意味着取得进展不需要任何参与者等待另一个参与者完成。如果这种等待是必要的,如果一名参与者挂起或操作缓慢,其他参与者也会受到类似的影响

相比之下,在无需等待的情况下,每个参与者都会尝试自己的操作,并与其他参与者进行竞争性互动。例如,每个线程可能会尝试提升某些状态,如果两个线程同时尝试,则只有一个线程会成功,但没有必要让任何“失败”的参与者重试。他们只是认识到其他人已经完成了任务,然后继续前进


无需等待的方法鼓励“尝试帮助”,而不是专注于“等待轮到我采取行动”,承认其他人也可能同时在尝试帮助。每个参与者都必须知道如何检测成功,何时重试,何时放弃,并确信尝试失败只是因为其他人先进入。只要任务完成了,不管是哪个线程完成的。

它不一定指常规意义上的死锁,但可能指线程之间的不吉利计时(可能是由于线程速度慢等原因)。“不吉利计时”可能会导致任意大的延迟。但是,这些延迟是有限的,除非在另一个进程中出现故障,并且它在终止时不会释放资源,或者它会死锁,或者…谢谢,但是我不确定这种情况:在一个具有def保证的“饥饿自由”属性的操作中应用互斥锁(例如,peterson alg.对于2个线程)。饿死了-自由了。每个线程完成该方法。因此,每个线程(由于peterson alg,此处限制为两个线程)完成操作。因此,每个方法调用都是在有限的步骤中完成的。通过应用含义2,这将是无需等待的!凭直觉:那不可能。相反,此操作的某个有限步数k将保证没有等待。谢谢,您的答案支持(1)的含义。如果我正确理解了您的答案,那么每个操作(或者更好地表述为“操作的每个执行路径”,因为存在由条件和逻辑循环等引起的不同路径)都与一定数量的步骤k相关联。(这是我的意思(1)“…有限数量的n个步骤。”但你的答案与“答案意味着定义(2)”[…]”的答案相矛盾。“k”是一个界,它是一个未知的数字(可能非常大)。我没有完全理解你问题中(1)和(2)的含义。显然,有些线索