我正在研究Linux,并试图了解Robin调度算法是如何工作的。在kernel\sched_rt.c文件中,有一个名为task_tick_rt的方法定义如下:
static void task_tick_rt(struct rq *rq, struct task_struct *p, int queued)
{
update_curr_rt(rq);
watchdog(rq, p);
/*
* RR tasks need a special form of timeslice management.
* FIFO tasks have no ti
我正在阅读,现在我在关于非阻塞保证的部分。以下是(强调我的)话:
如果每个调用都保证在有限的步骤中完成,则方法是无等待的。
..。
由于每个参与者都可以在有限的步骤之后(当调用结束时)取得进展,所以没有等待的方法没有饥饿的。
强调的内容在我看来并不十分清楚。饥饿在文档的前面被定义为参与者不可能取得进展(有些人被饿死了)。
现在,如果多个线程调用相同的无等待方法,它们就不能挨饿。这是否意味着,即使该方法是阻塞和无等待,存储永远不会发生?我只是想不出关于免等待方法的具体细节?
例如,如果一个方法调用阻塞I/O方法,那么它是否没有等待?我会说不,不是的。但是这个呢:
public class