posts - 17,  comments - 14,  trackbacks - 0

                生產(chǎn)者-消費者(producer-consumer)問題,兩個進(jìn)程共享一個公共的固定大小的緩沖區(qū)。其中一個是生產(chǎn)者,用于將消息放入緩沖區(qū);另外一個是消費者,用于從緩沖區(qū)中取出消息。

                這樣應(yīng)該是生產(chǎn)者生產(chǎn)一個產(chǎn)品,然后消費者取走一個產(chǎn)品,然后再生產(chǎn)、再消費,這個看似很理所當(dāng)然的邏輯在現(xiàn)實中是必然的,但是在程序里卻出現(xiàn)了問題。a:生產(chǎn)者生產(chǎn)了很多消費者卻沒有取,b:生產(chǎn)這還沒有生產(chǎn)完一個完整的產(chǎn)品消費者卻已經(jīng)取走了好幾次了,這樣取走的產(chǎn)品當(dāng)然是不合格的。

                下面就用生產(chǎn)和消費鞋子為例,看看程序是怎么運(yùn)行的吧.. .. ..

          Demo01

          結(jié)果:

          image

                從結(jié)果中可以看到,第一次取時已經(jīng)生產(chǎn)完一雙男鞋,女鞋還沒有生產(chǎn)完就取走了女鞋,第二次到第四次消費都是男鞋,看來是要么生產(chǎn)的太多了,沒有取走,要么就是取的太快,只生產(chǎn)了一雙男鞋卻取了四次。

                這樣的程序顯然是不符合實際的,所以就要加以改進(jìn)。

                應(yīng)該是生產(chǎn)時,生產(chǎn)者進(jìn)入車間并把車間的門上鎖,生產(chǎn)一雙后生產(chǎn)者出來,消費者進(jìn)入到車間并把車間門上鎖,取到鞋子后出來,這樣車間里只有一個人,要么生產(chǎn)者要么消費者,這樣就可以保證生產(chǎn)合格的產(chǎn)品。

          改進(jìn)的程序:

          Demo02

          運(yùn)行結(jié)果:

          image

          posted on 2010-11-12 23:30 Mineralwasser 閱讀(261) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          文章檔案(21)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 雅安市| 裕民县| 全州县| 辉南县| 黄山市| 岳普湖县| 乌兰浩特市| 鄂伦春自治旗| 张北县| 滕州市| 天峨县| 宁强县| 榆社县| 枣阳市| 南康市| 墨竹工卡县| 介休市| 池州市| 榆树市| 绍兴市| 嵊泗县| 钟祥市| 吕梁市| 迭部县| 肇庆市| 安达市| 香港| 遵义市| 长乐市| 江华| 大冶市| 台湾省| 营山县| 邢台市| 丹巴县| 酉阳| 定远县| 景德镇市| 东乌| 邯郸县| 东光县|