日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > php >内容正文

php

生产者消费者模式 php 【转】

發(fā)布時間:2025/4/9 php 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 生产者消费者模式 php 【转】 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在工作中常常聽到某某大牛之間的交談會涉及到,xx消費者啊啥的,到底什么大牛之間講的是什么??
這篇文章主要解決三個問題:?
1.到底什么是生產(chǎn)者和消費者,以及它們之間的故事?
2.它們之間靠什么交流?
3.應(yīng)用場景

正文

一、什么是生產(chǎn)者和消費者,以及它們之間的故事

在實際的程序開發(fā)中,會經(jīng)常碰到這樣的情況:小a模塊負責(zé)生產(chǎn)數(shù)據(jù),這些數(shù)據(jù)由另外一個模塊負責(zé)處理。產(chǎn)生數(shù)據(jù)的模塊,就形象地稱為生產(chǎn)者;而處理數(shù)據(jù)的模塊,就稱為消費者。

單單抽象出生產(chǎn)者和消費者,還夠不上是生產(chǎn)者/消費者模式。該模式還需要有一個緩沖區(qū)處于生產(chǎn)者和消費者之間,作為一個中介。生產(chǎn)者把數(shù)據(jù)放入緩沖區(qū),而消費者從緩沖區(qū)取出數(shù)據(jù)。大概的結(jié)構(gòu)如下圖。

可以這么理解,你(生產(chǎn)者)需要寫信寄給基友,你先放到郵箱(緩沖區(qū)),郵遞員(消費者)從郵箱取信進行派送(數(shù)據(jù)處理)。

那么有同學(xué)問了,好好的生產(chǎn)者和消費者直接溝通不就好了,搞出一個緩沖區(qū)是做甚??
其實這是有內(nèi)涵(優(yōu)點)的:

解耦

假設(shè)生產(chǎn)者和消費者都是兩個類,如果直接讓生產(chǎn)者調(diào)消費者的類的方法,勢必會使其依賴于消費者的類方法,萬一消費者的消費方式改變(函數(shù)改掉啦)那么生產(chǎn)者也要改。好了,代碼耦合了。

那么如果有了緩沖區(qū)就不一樣了,兩個都依賴于緩沖區(qū),緩沖區(qū)只起到緩沖數(shù)據(jù)作用,一邊存一邊取,互不關(guān)聯(lián)也不依賴。

ps:你寫信直接交給郵遞員,萬一郵遞員換了,那你不是還要重新認(rèn)識一下,還要關(guān)心是不是真的郵遞員。那如果是放郵箱的話,郵遞員是誰和你半毛錢關(guān)系沒有。

支持并發(fā)

生產(chǎn)者直接調(diào)消費者某個方法有個弊端:由于函數(shù)是同步的,也可以說是阻塞的,消費者沒返回之前,生產(chǎn)者只能一直等著,萬一消費者處理的又很慢,那生產(chǎn)者空閑著就浪費了。?
使用了生產(chǎn)者/消費者模式之后,生產(chǎn)者和消費者可以是兩個獨立的并發(fā)主體。生產(chǎn)者把制造出來的數(shù)據(jù)往緩沖區(qū)一丟,就可以再去生產(chǎn)下一個數(shù)據(jù)?;旧喜挥靡蕾囅M者的處理速度。

ps:如果沒郵箱,你就要站在等郵遞員來,想必這是坑爹的一件事。

支持生產(chǎn)消費者忙閑不均

緩沖區(qū)還有另一個好處。如果制造數(shù)據(jù)的速度時快時慢,緩沖區(qū)的好處就體現(xiàn)出來了。當(dāng)數(shù)據(jù)制造快的時候,消費者來不及處理,未處理的數(shù)據(jù)可以暫時存在緩沖區(qū)中。等生產(chǎn)者的制造速度慢下來,消費者再慢慢處理掉。

ps:萬一今天是情人節(jié)啥的,寄信的人特別多,郵遞員一回只能帶100封,那么多余100封的部分就可以放在郵箱,等處理好100封后再回頭取,繼續(xù)處理。

它們之間靠什么交流

那么生產(chǎn)者和消費者之間怎么交流呢?當(dāng)然是通過數(shù)據(jù)單元交流的。何謂數(shù)據(jù)單元捏?簡單地說,每次生產(chǎn)者放到緩沖區(qū)的,就是一個數(shù)據(jù)單元;每次消費者從緩沖區(qū)取出的,也是一個數(shù)據(jù)單元。

ps:寄信,信就是數(shù)據(jù)單元

那么數(shù)據(jù)單元涉及到一個很關(guān)鍵的問題,就是數(shù)據(jù)粒度的問題。?
有時出于性能等因素的考慮,也可能會把N個業(yè)務(wù)對象打包成一個數(shù)據(jù)單元。那么,這個N該如何取值就是顆粒度的考慮了。顆粒度的大小是有講究的。太大 的顆粒度可能會造成某種浪費;太小的顆粒度可能會造成性能問題。顆粒度的權(quán)衡要基于多方面的因素,以及一些經(jīng)驗值的考量。

ps:還是拿寄信的例子。如果顆粒度過小(比如設(shè)定為1),那郵遞員每次只取出1封信。如果信件多了,那就得來回跑好多趟,浪費了時間。?
如果顆粒度太大(比如設(shè)定為100),那寄信的人得等到湊滿100封信才拿去放入郵筒。假如平時很少寫信,就得等上很久,會很不爽滴~

應(yīng)用場景

那么在php中哪些地方會用到呢,或者說哪些地方會看到別人用到生產(chǎn)者和消費者模式?這里簡單講幾個:

swoole

對,你沒看錯,就是swoole。那么swoole其實是有使用了這個設(shè)計的模式,業(yè)務(wù)邏輯(生產(chǎn)者)將數(shù)據(jù)單元通過swoole的send函數(shù)弄到swoole的一個緩沖區(qū)之間,通過work進程進行分發(fā),task進程(消費者)進行消費。

耗時操作的異步處理

當(dāng)“耗時操作“遇到了”高并發(fā)“,如果不采取一點措施,卡慢崩會慢慢到來,此時可以將要處理的耗時操作的相關(guān)信息(數(shù)據(jù)單元)通過業(yè)務(wù)邏輯[生產(chǎn)者]push到redis隊列中(redis只是舉例),在通過跑一個腳本的進程[消費者]進行pop出數(shù)據(jù)單元進行處理。

?

轉(zhuǎn)載自

http://blog.csdn.net/u011957758/article/details/51138707

轉(zhuǎn)載于:https://www.cnblogs.com/clphp/p/7941290.html

總結(jié)

以上是生活随笔為你收集整理的生产者消费者模式 php 【转】的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 女人久久久 | 日本精品网站 | 亚洲一区视频在线播放 | 小柔的淫辱日记(h | 国产精品久久久久精 | 台湾综合色| 日本视频免费观看 | 91视频亚洲| 操操操网| 99re6这里有精品热视频 | 99日精品 | 麻豆国产视频 | 黄色片a级 | 在线国产三级 | 欧美激情一区二区视频 | 国内久久精品视频 | 日韩视频二区 | 裸体视频软件 | 日本美女操 | 日韩欧美一区在线观看 | 狠狠插影院 | 成人av视屏| 尤物精品视频在线观看 | 女同另类之国产女同 | 日韩欧美在线免费观看 | 五月婷婷综合网 | 善良的公与媳hd中文字 | 91高清在线视频 | 亚洲精品久久久久av无码 | 性少妇mdms丰满hdfilm | 超碰97观看| www.日本黄 | 日本www色 | 欧美成免费| 一区二区伦理片 | 国产三级av在线播放 | jzz在线观看 | 黄色在线观看视频 | 天降女子在线 | 天堂精品一区 | 欧美囗交做爰视频 | 欧美乱妇高清无乱码 | 欧美日韩国产一区二区在线观看 | 在线免费观看一区二区三区 | 日韩欧美国产另类 | 色中文字幕 | 色玖玖 | www.com国产 | 伊人ab | av首页在线观看 | 国产一区二区三区四区五区 | 黄色av片三级三级三级免费看 | 亚洲区一区二区 | 不卡的一区二区 | 男女做爰猛烈刺激 | 日韩的一区二区 | av资源站最新av | 色爽交 | 久久经典| 少妇精品在线 | 999国产视频 | 欧美日韩一区二区三区不卡 | 亚洲精品久久久久国产 | 在线观看网站av | 在线精品视频播放 | 成人免费午夜视频 | 亚洲黄网站在线观看 | 天天想你在线观看完整版高清 | 成人午夜视频在线观看 | 欧美xxxx中国 | 亚洲第一黄网 | 欧美国产另类 | 欧美在线免费观看 | 777理伦三级做爰 | 欧美性在线视频 | 欧美色插| 欧美自拍偷拍一区 | 久久久性色精品国产免费观看 | 国内成人自拍视频 | 91蜜桃网| 中文字幕欧美在线 | 亚洲成人一级片 | av网址在线| 91一级视频 | 欧美 日韩 中文字幕 | 在线播放日韩av | 国产免费一区二区三区 | 永久免费精品视频 | 91国偷自产一区二区三区女王 | 农村少妇久久久久久久 | 人妻av无码一区二区三区 | 黄色小视频在线 | 国产午夜麻豆影院在线观看 | 波多野结衣视频一区 | 久久艹在线 | 欧美啪视频 | jizjiz中国少妇高潮水多 | 国产乡下妇女做爰 | 欧美人与性动交ccoo |