皮特森算法(Peterson's Algorithm)是一種用於解決並發進程中互斥訪問共享資源的算法,由Gary L. Peterson於1981年提出。這種算法主要用於控制兩個執行緒對一個共享資源的訪問,以避免訪問衝突。
皮特森算法使用兩個共享變數:flag和turn。其中,flag[i]表示進程i是否想要進入臨界區,turn則表示有權訪問共享資源的進程的ID。算法的核心思想是:兩個進程都要聲明自己想要進入臨界區,並設定turn為對方的ID。這樣,如果兩個進程都想要進入臨界區,就會有一個進程等待,直到另一個進程讓出。
皮特森算法的優點是簡單易懂,適用於兩個進程之間的互斥訪問。然而,它也有一些限制,例如不能擴展到多個進程,且在某些現代計算機架構中可能不適用或需要額外的同步機制來保證正確性。