freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

進(jìn)程同步與互斥-資料下載頁(yè)

2024-10-17 10:13本頁(yè)面

【導(dǎo)讀】下面分別予以介紹。信號(hào)量集的標(biāo)識(shí)符。開(kāi)或存取操作依賴(lài)于semflag參數(shù)的取值。原來(lái)的值一致,否則也會(huì)返回錯(cuò)誤信息。③.只設(shè)置IPC_EXCL位而不設(shè)置IPC_CREAT位沒(méi)有任何意義。semid——信號(hào)量集的標(biāo)識(shí)符,由semget()得到。個(gè)為1,依次類(lèi)推。⑵.semop確定對(duì)sem_num指定的信號(hào)量采取何種操作,它可以為負(fù)數(shù)、正數(shù)和零。其差如果大于0,則表示該進(jìn)程可以使用臨界資源進(jìn)入臨界區(qū);其差如果小于0,在沒(méi)有指定IPC_NOWAIT的情況下,該進(jìn)程睡眠,并插入。sem_queues等待隊(duì)列尾部,直到請(qǐng)求的條件得到滿(mǎn)足;如果指定了IPC_NOWAIT,SEM_UNDO:指明內(nèi)核為信號(hào)量操作保留恢復(fù)值。能夠進(jìn)行此項(xiàng)操作的。⑴.定義P、V操作所用的數(shù)據(jù)結(jié)構(gòu):structsembufP,V;信號(hào)量;操作權(quán)限取決于最后一個(gè)參數(shù),0666表示任意用戶(hù)可讀可寫(xiě),集已經(jīng)存在,則返回其標(biāo)識(shí)符。

  

【正文】 mop(fullid,amp。V,1)。 //對(duì) fullid執(zhí)行 V操作 if(strncmp(viraddr,end,3)==0) { sleep(1)。 //睡眠 1秒,等待父進(jìn)程將 end取走 break。 } } printf(Child ok!\n)。 exit(0)。 } } 2020/11/23 26 運(yùn)行結(jié)果: 由結(jié)果可以看出 , 子進(jìn)程寫(xiě)到單緩沖區(qū)中的信息 , 父進(jìn)程都依次取出并輸出了 。 2020/11/23 27 利用信號(hào)量實(shí)現(xiàn)進(jìn)程同步 [例 411] 設(shè)父進(jìn)程創(chuàng)建一個(gè)子進(jìn)程作為生產(chǎn)者 , 創(chuàng)建兩個(gè)子進(jìn)程作為消費(fèi)者 , 這三個(gè)子進(jìn)程使用一個(gè)共享內(nèi)存 , 該共享內(nèi)存定義為具有 5個(gè)變量的數(shù)組 , 每個(gè)變量表示一個(gè)緩沖區(qū) , 緩沖區(qū)號(hào)為 0~ 4。 生產(chǎn)者進(jìn)程依次往緩沖區(qū) 0~ 4中寫(xiě) 10個(gè)數(shù)據(jù) 1~ 10, 兩個(gè)讀進(jìn)程依次從緩沖區(qū)0~ 4中輪流取出這 10個(gè)數(shù)據(jù) 。 使用信號(hào)量實(shí)現(xiàn)進(jìn)程讀寫(xiě)緩沖區(qū)的同步和互斥 。 生產(chǎn)者消費(fèi)者同步問(wèn)題 消費(fèi)者 A進(jìn)程 消費(fèi)者 B進(jìn)程 生產(chǎn)者進(jìn)程 0 1 3 2 4 2020/11/23 28 利用信號(hào)量實(shí)現(xiàn)進(jìn)程同步 分析: ⑴ 需要?jiǎng)?chuàng)建 3個(gè)子進(jìn)程:生產(chǎn)者 、 消費(fèi)者 A、 消費(fèi)者 B; ⑵ 需要使用 3個(gè)信號(hào)量: empty、 full、 mutex, 分別表示緩沖區(qū)是否有空 、 是否有數(shù)和互斥信號(hào)量 , 其初值分別為:5, 0, 1; ⑶ 需要 2個(gè)共享內(nèi)存: array和 get, 分別表示多緩沖區(qū)數(shù)組變量 array [0]~ [4]、 和消費(fèi)者讀緩沖區(qū)號(hào)的計(jì)數(shù) get, get計(jì)數(shù)由兩個(gè)消費(fèi)者進(jìn)程共享 , 由于生產(chǎn)者只有一個(gè)沒(méi) , 所以寫(xiě)緩沖區(qū)號(hào)的計(jì)數(shù) set不需要使用共享內(nèi)存 。 2020/11/23 29 算法: 創(chuàng)建共享存儲(chǔ)區(qū) array, get; 附接共享存儲(chǔ)區(qū)到進(jìn)程空間; 共享存儲(chǔ)區(qū)賦初值; 創(chuàng)建信號(hào)量 empty并初始化; 創(chuàng)建信號(hào)量 full并初始化; 創(chuàng)建信號(hào)量 mutex并初始化; 創(chuàng)建生產(chǎn)者子進(jìn)程; 如果生產(chǎn)者子進(jìn)程返回: for(i=0; i10, i++) { P(empty); P( mutex); 寫(xiě)數(shù)據(jù)到共享存儲(chǔ)區(qū); 緩沖區(qū)計(jì)數(shù) set++; V( mutex); V(full); exit(0); } 如果父進(jìn)程返回: 創(chuàng)建消費(fèi)者 A子進(jìn)程; 如果消費(fèi)者 A進(jìn)程返回: for(i=0; i10, i++) { P(full); P( mutex); 從共享存儲(chǔ)區(qū)中取數(shù)據(jù); 緩沖區(qū)計(jì)數(shù) (*get)++; V( mutex); V(empty); exit(0); } 如果父進(jìn)程返回: 創(chuàng)建消費(fèi)者 B子進(jìn)程; 如果消費(fèi)者 B進(jìn)程返回: 2020/11/23 30 算法: for(i=0; i10, i++) { P(full); P( mutex); 從共享存儲(chǔ)區(qū)中取數(shù)據(jù); 緩沖區(qū)計(jì)數(shù) (*get)++; V( mutex); V(empty); exit(0); } 程序清單: 如果父進(jìn)程返回: wait(0); wait(0); wait(0); 斷開(kāi) 2個(gè)共享存儲(chǔ)區(qū); 撤消 2個(gè)共享存儲(chǔ)區(qū); 撤消 3個(gè)信號(hào)量; exit(0); } 2020/11/23 31 編譯連接并執(zhí)行后的輸出結(jié)果如下: 由運(yùn)行結(jié)果可以看出 , 生產(chǎn)者進(jìn)程分別往緩沖區(qū) 0~ 4中送了 10次產(chǎn)品 ,消費(fèi)者進(jìn)程 A和 B輪流從緩沖區(qū) 0~ 4中取走產(chǎn)品 , 并實(shí)現(xiàn)了 3個(gè)進(jìn)程之間的同步和互斥 , 即實(shí)現(xiàn)了生產(chǎn)者進(jìn)程送了產(chǎn)品后消費(fèi)者進(jìn)程才取走產(chǎn)品 , 并且一次只有一個(gè)進(jìn)程進(jìn)入緩沖區(qū) 。
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1