请考虑以下用法:
Shared data: semaphore lock; // initially lock = 1
...
down(lock);
CRITICAL SECTION
up(lock);
此代码是否满足饥饿自由(即如果进程等待进入CS,最终会成功)?
答案 0 :(得分:1)
这实际上取决于多个线程在down(lock)
等待时选择线程时使用的策略。
e.g。
例如,Java的Semaphore
计数在创建时可以配置为“公平”。或不。在这里,'公平'指的是等待线程将被放入FIFO中,以便首先执行等待时间最长的线程。