临界区使用原则:
- 空闲让进:没有进程在临界区时,想进入临界区的进程可进入;
- 忙则等待:当已有进程进入临界区时,其他试图进入临界区的进程必须等待;
- 有限等待:对请求访问的进程,应保证能在有限时间内进入临界区;
- 让权等待:当进程不能进入临界区时,应立即释放处理器,防止进程忙等待;
补充:在单处理器的情况下,要避免忙等待(进程在得到临界区访问权之前,持续测试而不做其他事情)
在多处理器情况下,则可以允许这个进程不下cpu,持续测试,直到有临界区资源被其他进程释放让出来。原因是此时切换带来的开销占大头(不止一个cpu,其他cpu可以继续完成其他工作)。这种情况叫自旋锁。