1樓:
這種需求應該是用lock free佇列。
而且1寫1讀的lock free佇列實現並不太難。
如果自己沒把握寫得對,那就直接在網上找這些庫吧。
2樓:Chrim
剛好再看Modern Operating Systems P128
緩衝區的作用主要是保證事件處理的順序吧
如果只有緩衝區 size =1 那順序就無法保證了
3樓:dong
這個問題有乙個簡單有效的解決辦法:
生產者消費者佇列裡面僅僅管理指標,大家操作佇列時是互斥的,但修改指標的時間非常短暫,因此併發性依舊可以很好。
拿你前面的例子來說,具體的方案可以如下:
假設你有100個緩衝區,編號為1..100,首先有乙個full的佇列,初始為空,乙個empty佇列,初始內容為1..100,P從empty取緩衝區,取到編號為n的緩衝區後,操作n緩衝區,完成之後把n緩衝區放到full佇列中。
C從full取緩衝區,取出緩衝區k,操作k緩衝區,完成之後把k放到empty佇列。互斥操作僅僅限於訪問乙個int,不會限制併發;同時不會發生兩個程序同時操作同乙個緩衝區的情況。
如果你的共享緩衝區數量多於生產者數量,那麼事情可以簡化,保持乙個空閒的緩衝區列表,P與C互斥的訪問該空閒列表,進行緩衝區的申請與釋放操作,然後用經典的方式操作生產者消費者佇列裡的指標就可以了。
經濟的源頭是消費者還是生產者?
眉宇 首先生產決定消費 1,生產決定消費物件。我們的消費物件必須生產出來,否則就談不上消費。2,生產決定消費方式。3,生產決定消費水平和質量。4,生產為消費創造動力。如沒有汽車的生產,就沒有人們對家庭轎車的強烈嚮往。其次,消費對生產具有重要的反作用。1,消費的發展促進生產的發展。2,消費所形成的新的...
python 多程序,乙個生產者(資料未重複),多個消費者消費重複了 怎麼解決?
淡定 本人計算機半路出家人員 看著你提出的問題有點像作業系統中講的一類問題,不知道我的理解對了沒 你可以看一下關於作業系統訊號量解決系統資源分配的問題,看看能否幫你答疑解惑 我記得應該專門針對生產者與消費著這一問題有專門的講解 Justin Z 提供兩條思路 multiprocessing模組下有L...
如何評價Minecraft內容生產者3TUSK?
梨木 3T在我看來是個非常可靠的人,是的在各種意義上 我跟他的交集雖然只在Minecraft圈子內,但是無論在那個角度上,看他說的各種話,無不透露自己獨特的見解,朴善的內心,如果網路是乙個人的縮影,那麼代入現實,我相信3T也許是個傲嬌的老好人。 酒石酸菌 媽耶,為什麼會有人問這個問題 我與3T的認識...