同步与互斥
有數(shù)據(jù)交互的進(jìn)程之間的關(guān)系主要有兩種,同步與互斥.所謂互斥,是指在不同進(jìn)程之間的若干程序片斷,當(dāng)某個進(jìn)程運行其中一個程序片段時,其它進(jìn)程就不能運行它們之中的任一程序片段,只能等到該進(jìn)程運行完這個程序片段后才可以運行.所謂同步,是指在不同進(jìn)程之間的若干程序片斷,它們的運行必須嚴(yán)格按照規(guī)定的某種先后次序來運行,這種先后次序依賴于要完成的特定的任務(wù). ? 很顯然,同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步.?也就是說互斥是兩個線程之間不可以同時運行某個代碼片段,他們會相互排斥,必須等待一個線程運行完畢,另一個才能運行;而同步也是不能同時運行的,同時它還要必須要安照某種次序來運行相應(yīng)的線程(也是一種互斥).? ? 互斥:是指某一資源同時只允許一個訪問者對其進(jìn)行訪問,具有唯一性和排它性.但互斥無法限制訪問者對資源的訪問順序,即訪問是無序的.任務(wù)A需要使用打印機,任務(wù)B也需要使用打印機,那么只有在任務(wù)A使用結(jié)束的情況下B才能使用打印機,所有A和B之間是間接關(guān)系,那么實現(xiàn)這種間接關(guān)系的機制就是互斥.但是互斥無法限制訪問者對資源的訪問順序,即訪問的無序的. 同步:是指在互斥的基礎(chǔ)上(大多數(shù)情況),通過其它機制實現(xiàn)訪問者對資源的有序訪問.在大多數(shù)情況下,同步已經(jīng)實現(xiàn)了互斥,特別是所有寫入資源的情況必定是互斥的.少數(shù)情況是指可以允許多個訪問者同時訪問資源.任務(wù)A對某個緩沖區(qū)進(jìn)行寫操作,任務(wù)B從這個緩沖區(qū)進(jìn)行讀操作,那么A和B就是直接的關(guān)系,那么實現(xiàn)這種直接關(guān)系的機制就是同步.大多數(shù)在建立在互斥的基礎(chǔ)上,通過機制實現(xiàn)訪問者對資源的有序訪問. 在linux中實現(xiàn)線程間的同步和互斥的主要機制是:信號量和互斥鎖
轉(zhuǎn)載于:https://www.cnblogs.com/crazyleeyang/p/3143803.html
總結(jié)
- 上一篇: matlab中gatbx工具箱的添加
- 下一篇: Ubuntu防火墙 UFW 设置