哲学家就餐问题

哲学家就餐问题(英语:Dining philosophers problem)是在计算机科学中的一个经典问题,用来演示在并发计算多线程同步(Synchronization)时产生的问题。

在1971年,著名的计算机科学家艾兹格·迪科斯彻提出了一个同步问题,即假设有五台计算机都试图访问五份共享的磁带驱动器。稍后,这个问题被托尼·霍尔重新表述为哲学家就餐问题。这个问题可以用来解释死锁和资源耗尽。

拓展阅读 - 死锁的四个条件:

  • 禁止抢占(no preemption):系统资源不能被强制从一个进程中退出。

  • 持有和等待(hold and wait):一个进程可以在等待时持有系统资源。

  • 互斥(mutual exclusion):资源只能同时分配给一个行程,无法多个行程共享。

  • 循环等待(circular waiting):一系列进程互相持有其他进程所需要的资源。

死锁只有在四个条件同时满足时发生,预防死锁必须至少破坏其中一项。

Last updated