程序間互斥、程序間同步 & 訊息通訊機制的同步、非同步
程序的互斥、同步:
互斥:是指某一資源同時只允許一個訪問者對其進行訪問,具有唯一性和排它性。但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的。 同步:是指在互斥的基礎上(大多數情況),通過其它機制實現訪問者對資源的有序訪問。在大多數情況下,同步已經實現了互斥,特別是所有寫入資源的情況必定是互斥的。少數情況是指可以允許多個訪問者同時訪問資源。
程序的狀態是基於一定的原因和條件而變化的。而這些原因和條件又常常是因為程序間的相互制約關係而引起的。系統中程序會有這種關係。主要是由於程序對資源的共享性,由於這種共享的特徵,使系統中原來沒有邏輯關係的程序因為互相競爭資源而發生了制約關係。這種關係的基本形式
又由於系統中為了完成同一個任務而建立若干程序,它們之間必然是夥伴程序。如作業的一組並行程序共同完成一項任務,有時它們要在某點上互相等待或互通訊息,這種關係的基本形式是"程序-程序",這是程序之間的一種直接關係,表現了程序之間的協同工作的特性,稱為程序間的同步關係。例如:現在A,B兩個程序,A程序負責輸入資料並送入緩衝區中,B程序必須負責加工緩衝區中的資料並輸出,為了保證這兩個程序之間能夠協同工作。則B程序必須等待A程序發來緩衝區已滿的訊號後才開始工作。A程序必須等待B程序發來緩衝區中的
訊息通訊機制的同步、非同步:
所謂同步,就是在發出一個*呼叫*時,在沒有得到結果之前,該*呼叫*就不返回。但是一旦呼叫返回,就得到返回值了。換句話說,就是由*呼叫者*主動等待這個*呼叫*的結果。
而非同步則是相反,*呼叫*在發出之後,這個呼叫就直接返回了,所以沒有返回結果。換句話說,當一個非同步過程呼叫發出後,呼叫者不會立刻得到結果。而是在*呼叫*發出後,*被呼叫者*通過狀態、通知來通知呼叫者,或通過回撥函式處理這個呼叫。
舉個通俗的例子:你打電話問書店老闆有沒有《分散式系統》這本書,如果是同步通訊機制,書店老闆會說,你稍等,
http://m.blog.csdn.net/Alvin_CSDN_blog/article/details/64124077點選開啟連結
https://baike.baidu.com/item/%E7%BA%BF%E7%A8%8B%E5%90%8C%E6%AD%A5/4855164?fr=aladdin點選開啟連結
https://www.cnblogs.com/kubixuesheng/p/4355786.html點選開啟連結