阻挠自由是否也意味着饥饿自由?

Does obstruction freedom imply starvation freedom too?

如果一个线程 运行 隔离足够长的时间然后在有限的步骤中完成该方法,则该方法是无障碍的。而方法的饥饿自由确保所有调用该方法的线程最终将在有限的步骤中完成,并且所有线程都在系统范围内取得进展。

现在,如果所有无障碍方法 运行 隔离的时间足够长,它们就会完成,这将确保所有线程的进展。还要注意,无障碍和无饥饿都是依赖条件,即确保 OS 调度器是公平的。

所以我觉得阻挠自由意味着饥饿自由。唯一的区别是为非阻塞算法定义了无阻塞条件。另一方面,无饥饿条件用于阻塞算法。这是正确的吗?

Now if all obstruction free methods are run in isolation for long enough, they will complete and this ensures progress across all threads.

好大"if"。

Also to note, both obstruction free and starvation freedom are dependent conditions i.e. ensure that the OS scheduler is fair.

我不明白你的意思(也许他们要求调度程序是公平的;无障碍并不能确保这一点。但我不相信这是准确的. 阻塞自由不需要调度器公平)。

So I feel that obstruction freedom implies starvation freedom

否,因为无法保证无障碍方法 孤立地到达 运行;这将需要所有其他进程停止,并且要求它们要么取得进展并完成,要么被饿死。如果保证他们能进步,你至少有Lock-freedom。

请参阅 Wikipedia entry on non-blocking algorithms 了解详细信息。阻碍自由是 "the weakest natural non-blocking progress guarantee"(强调我的)。这意味着饥饿自由(仅由等待自由暗示)是 更强 的保证。饥饿自由意味着阻碍自由,而不是相反。