posts - 17,  comments - 14,  trackbacks - 0

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

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

                下面就用生產和消費鞋子為例,看看程序是怎么運行的吧.. .. ..

          Demo01

          結果:

          image

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

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

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

          改進的程序:

          Demo02

          運行結果:

          image

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

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


          網站導航:
           
          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(1)

          文章檔案(21)

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 哈巴河县| 南昌县| 时尚| 黄梅县| 宿松县| 望奎县| 嘉鱼县| 保康县| 衡山县| 台湾省| 彩票| 英超| 涿鹿县| 苗栗县| 平昌县| 衡东县| 宿州市| 巴彦淖尔市| 中江县| 清新县| 南雄市| 牡丹江市| 沧源| 太白县| 洪雅县| 天峨县| 三门县| 陇南市| 古田县| 甘孜县| 内丘县| 武冈市| 皋兰县| 静安区| 新津县| 泸定县| 白朗县| 班戈县| 黔江区| 惠来县| 重庆市|