准确阐述临界区工作原理?

发布于 2022-04-12  15 次阅读


临界区指的是一个访问共用资源(例如:共用设备或是共用存储器)的程序片段,而这些共用资源又无法同时被多个线程访问的特性。当有线程进入临界区段时,其他线程或是进程必须等待(例如:bounded waiting 等待法),有一些同步的机制必须在临界区段的进入点与离开点实现,以确保这些共用资源是被互斥获得使用

用于多线程的互斥访问。如果有多个线程试图同时访问临界区,那么在有一个线程进入临界区后,其他试图访问的线程将被挂起,直到进入临界区的线程离开。临界区在被释放后,其他线程可以继续抢占,并以此达到对临界区的互斥访问。(临界区中一般都是一个简短的代码段)

  • 1.如果有若干进程要求进入空闲的临界区,一次仅允许一个进程进入。
  • 2、任何时候,处于临界区内的进程不可多于一个。如已有进程进入自己的临界区,则其它所有试图进入临界区的进程必须等待。
  • 3、进入临界区的进程要在有限时间内退出,以便其它进程能及时进入自己的临界区。
  • 4、如果进程不能进入自己的临界区,则应让出CPU,避免进程出现“忙等”现象。

利用synchronized(this)完成线程的临界区,形成所谓的线程临界区