新開傳奇手游網(wǎng)站大全網(wǎng)站seo關(guān)鍵詞
生產(chǎn)者-消費者
系統(tǒng)中有一組生產(chǎn)者進程和一組消費者進程
兩者共享一個初始為空,大小為n的緩沖區(qū)
緩沖區(qū)沒滿,生產(chǎn)者才能放入
緩沖區(qū)沒空,消費者才能取出
互斥地訪問緩沖區(qū)
互斥要在同步之后,不然會導(dǎo)致想要同步,但由于沒有鎖而導(dǎo)致死鎖
遵循先V后P
多生產(chǎn)者-多消費者
多對多需要清楚互斥量是否為1,若為1可能可以不加互斥,若不為1則需要加,因為要避免覆寫緩沖區(qū),導(dǎo)致數(shù)據(jù)錯誤
同步需要梳理好前后關(guān)系,例如這里的盤子和水果
讀者-寫者
當(dāng)有讀者和寫者兩組并發(fā)進程,共享一個文件,讀時只允許讀,不允許寫,寫時不允許讀和寫
難點在怎么確定當(dāng)前訪問的進程是哪種進程
此處將互斥量套在檢查count和賦值count上,但造成了讀優(yōu)先,且寫?zhàn)囸I
為了解決寫?zhàn)囸I,加入對寫標(biāo)志的同步操作,即當(dāng)有寫進程申請訪問時,讀文件進程只能等待,讀寫平衡法
吸煙者
三個抽煙者各自持有三種材料中的一種,一個供貨商每次提供兩種材料,抽煙者一湊齊材料就能抽,此處就涉及了線程同步問題
其實這里finish用做表示抽完才能放材料,設(shè)置三種材料作為變量即可
哲學(xué)家進餐
這里就不能常規(guī)的p操作檢查兩邊的筷子能否拿起,因為同時并發(fā)會導(dǎo)致都吃不上飯
要想實現(xiàn)不死鎖,需要讓他們按一定順序吃飯,如只有能拿起一雙筷子的才能吃飯,不然就不能拿筷子