linux之多任务的同步与互斥
?1、操作系統(tǒng):
?基本都是多任務(wù)操作系統(tǒng),即同時(shí)有大量可調(diào)度實(shí)體在運(yùn)行。在多任務(wù)操作系統(tǒng)中。
?
?
?2、同時(shí)運(yùn)行的多個(gè)任務(wù)可能產(chǎn)生的問題
???????? 1) 都需要訪問/使用同一種資源
????????? 2) 多個(gè)任務(wù)之間有依賴關(guān)系,某個(gè)任務(wù)的運(yùn)行依賴于另一個(gè)任務(wù)
? 這兩種情形是多任務(wù)編程中遇到的最基本的問題,也是多任務(wù)編程中的核心問題,同步和互斥就是用于解決這兩個(gè)問題的。
?
?
?
3、互斥
?
?
?
??? 是指散步在不同任務(wù)之間的若干程序片斷,當(dāng)某個(gè)任務(wù)運(yùn)行其中一個(gè)程序片段時(shí),其它任務(wù)就不能運(yùn)行它們之中的任一程序片段,只能等到該任務(wù)運(yùn)行完這個(gè)程序片段后才可以運(yùn)行。最基本的場景就是:一個(gè)公共資源同一時(shí)刻只能被一個(gè)進(jìn)程或線程使用,多個(gè)進(jìn)程或線程不能同時(shí)使用公共資源。
?
?
?
4、同步
?? 是指散步在不同任務(wù)之間的若干程序片斷,它們的運(yùn)行必須嚴(yán)格按照規(guī)定的某種先后次序來運(yùn)行,這種先后次序依賴于要完成的特定的任務(wù)。最基本的場景就是:兩個(gè)或兩個(gè)以上的進(jìn)程或線程在運(yùn)行過程中協(xié)同步調(diào),按預(yù)定的先后次序運(yùn)行。比如 A 任務(wù)的運(yùn)行依賴于 B 任務(wù)產(chǎn)生的數(shù)據(jù)。
顯然,同步是一種更為復(fù)雜的互斥,而互斥是一種特殊的同步。也就是說互斥是兩個(gè)任務(wù)之間不可以同時(shí)運(yùn)行,他們會(huì)相互排斥,必須等待一個(gè)線程運(yùn)行完畢,另一個(gè)才能運(yùn)行,而同步也是不能同時(shí)運(yùn)行,但他是必須要安照某種次序來運(yùn)行相應(yīng)的線程(也是一種互斥)!因此互斥具有唯一性和排它性,但互斥并不限制任務(wù)的運(yùn)行順序,即任務(wù)是無序的,而同步的任務(wù)之間則有順序關(guān)系。
?
?
總結(jié)
以上是生活随笔為你收集整理的linux之多任务的同步与互斥的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux之解决在ubuntu上面打开w
- 下一篇: linux之mutex(互斥锁)