最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

秒殺多線程-PV操作

2023-03-20 21:36 作者:ベ計(jì)院小白隆ミ  | 我要投稿

PV操作由P操作原語(yǔ)和V操作原語(yǔ)組成(原語(yǔ)也叫原子操作Atomic Operation,是不可中斷的過(guò)程),對(duì)信號(hào)量(注意不要和Windows中的信號(hào)量機(jī)制相混淆)進(jìn)行操作,具體定義如下:

P(S):

1.將信號(hào)量S的值減1,即S=S-1;

2.如果S>=0,則該進(jìn)程繼續(xù)執(zhí)行;否則該進(jìn)程置為等待狀態(tài)。


V(S):

1.將信號(hào)量S的值加1,即S=S+1;

2.該進(jìn)程繼續(xù)執(zhí)行;如果該信號(hào)的等待隊(duì)列中有等待進(jìn)程就喚醒一等待進(jìn)程。

用PV操作實(shí)現(xiàn)多線程的同步與互斥是非常簡(jiǎn)單的,只要考慮邏輯處理上合理嚴(yán)密而不用考慮具體技術(shù)細(xì)節(jié),因此與寫偽代碼較為相似。比如有多個(gè)進(jìn)程P1、P2、 ……PN。它們要互斥的訪問(wèn)一個(gè)資源。用PV操作來(lái)實(shí)現(xiàn)就非常方便直觀。下面是PV操作代碼:

設(shè)置信號(hào)量為S,初值為1。各進(jìn)程的操作流程如下:

進(jìn)程P1

P(S);

訪問(wèn)資源;

V(S);


進(jìn)程P2

P(S);

訪問(wèn)資源;

V(S);

...

進(jìn)程Pn

P(S);

訪問(wèn)資源;

V(S);


可以看出PV操作會(huì)忽略具體的編程細(xì)節(jié),讓程序員的主要精力放在線程同步互斥的邏輯處理上。因此,通過(guò)練習(xí)PV操作能快速有效提高程序員對(duì)多線程的邏輯思維能力,達(dá)到強(qiáng)化“內(nèi)功”的目的。

放水果

桌上有一空盤,允許存放一個(gè)水果。爸爸可向盤中放蘋果,也可向盤中放桔子,兒子專等吃盤中的桔子,女兒專等吃盤中的蘋果。規(guī)定當(dāng)盤空時(shí)一次只能放一個(gè)水果供吃者取用,請(qǐng)用P、V原語(yǔ)實(shí)現(xiàn)爸爸、兒子、女兒三個(gè)并發(fā)進(jìn)程的同步。

分析問(wèn)題:

1.爸爸等待盤子空

2.兒子等待盤中水果是桔子

3.女兒等待盤中水果是蘋果

可以看出沒(méi)有互斥資源。先設(shè)置三個(gè)信號(hào)量,信號(hào)量Orange表示盤中有桔子,初值為0。信號(hào)量Apple表示盤中有蘋果,初值為0。信號(hào)量EmptyDish表示盤子為空,初值為1。三個(gè)人的操作流程如下所示:

1.爸爸

2.兒子

3.女兒

安全島

在南開(kāi)大學(xué)至天津大學(xué)間有一條彎曲的路,每次只允許一輛自行車通過(guò),但中間有小的安全島M(同時(shí)允許兩輛車),可供兩輛車在已進(jìn)入兩端小車錯(cuò)車,設(shè)計(jì)算法并使用P,V實(shí)現(xiàn)。

分析問(wèn)題:

1.從N到T出發(fā)的人需要等到上個(gè)出發(fā)的人到達(dá)T且道路K上沒(méi)有人,從T到N的也類似

2.道路K和L上只能有一輛自行車行駛

分析之后,下面就用PV原語(yǔ)給出答案(考研輔導(dǎo)書上的答案):

設(shè)置信號(hào)量NT表示在路口N且從N到T方向上允許出發(fā)的自行車數(shù)量,初值為1。信號(hào)量TN表示在路口T且從T到N方向上允許出發(fā)的自行車數(shù)量,初值為1。信號(hào)量K和L表示道路,初值均為1。這樣從N到T的車和從T到N的車的行駛流程如下:

這個(gè)題目的解法有很多,比如還可以用信號(hào)量M來(lái)記錄安全島M上空位個(gè)數(shù),初值為2。每個(gè)進(jìn)入道路前的人都要先預(yù)訂安全島上的空位,訂到后再互斥的進(jìn)入道路。否則就要等待安全島上有空位。信號(hào)量K和L表示道路,初值均為1。然后從N到T的車和從T到N的車的行駛流程如下:


參考:https://blog.csdn.net/morewindows/article/details/7650470


秒殺多線程-PV操作的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
新河县| 越西县| 曲靖市| 秭归县| 灌阳县| 那坡县| 南康市| 开封县| 宣汉县| 鹤山市| 咸丰县| 兴国县| 扎兰屯市| 枝江市| 库尔勒市| 依安县| 凤山市| 安顺市| 桑植县| 肥西县| 收藏| 巴里| 张家港市| 澄城县| 塔河县| 康保县| 普格县| 东丽区| 辽宁省| 汽车| 延川县| 濮阳县| 鲜城| 呼伦贝尔市| 德惠市| 石河子市| 博爱县| 咸宁市| 且末县| 霍邱县| 同德县|