国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【設計模式】生產(chǎn)者消費者模型

這篇具有很好參考價值的文章主要介紹了【設計模式】生產(chǎn)者消費者模型。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

帶你輕松理解生產(chǎn)者消費者模型!生產(chǎn)者消費者模型可以說是同步與互斥最典型的應用場景了!文末附有模型簡單實現(xiàn)的代碼,若有疑問可私信一起討論。

一:為什么要使用生產(chǎn)者消費者模型?

生產(chǎn)者消費者模式就是通過一個容器來解決生產(chǎn)者和消費者的強耦合問題。生產(chǎn)者和消費者彼此之間不直接通訊,而通過中間容器(阻塞隊列,環(huán)形隊列等)來進行通訊,所以生產(chǎn)者生產(chǎn)完數(shù)據(jù)之后不用等待消費者處理,直接扔給阻塞隊列,消費者不找生產(chǎn)者要數(shù)據(jù),而是直接從阻塞隊列里取,阻塞隊列就相當于一個緩沖區(qū),平衡了生產(chǎn)者和消費者的處理能力。這個阻塞隊列就是用來給生產(chǎn)者和消費者解耦的。
【設計模式】生產(chǎn)者消費者模型

二:生產(chǎn)者消費者模型的優(yōu)點

  • 解耦
  • 支持并發(fā)
  • 支持忙閑不均

??此處的并發(fā)并不是在臨界區(qū)中并發(fā),而是說生產(chǎn)時和消費時各自執(zhí)行(即消費任務的同時也在制作任務),實現(xiàn)并發(fā)!
??此處的忙閑不均體現(xiàn)在制作任務和消費任務的花費時間不同。

三:基于阻塞隊列的生產(chǎn)者和消費者之間的關系

同步:當隊列為空時,消費者只有阻塞等待生產(chǎn)者生產(chǎn)之后才可被喚醒繼續(xù)消費。當隊列為滿時,生產(chǎn)者只有阻塞等待消費者消費后才可被喚醒繼續(xù)生產(chǎn)。
互斥:體現(xiàn)在生產(chǎn)者與生產(chǎn)者,消費者與消費者之間,同一時刻只允許一個執(zhí)行流進入臨界區(qū)訪問臨界資源。生產(chǎn)者與消費者之間在隊列為滿或者為空時也有體現(xiàn)互斥性,同一時刻只允許一方訪問臨界資源。

四:基于BlockingQueue的生產(chǎn)者消費者模型

在多線程編程中阻塞隊列(Blocking Queue)是一種常用于實現(xiàn)生產(chǎn)者和消費者模型的數(shù)據(jù)結構。其與普通的隊列區(qū)別在于,當隊列為空時,從隊列獲取元素的操作將會被阻塞,直到隊列中被放入了元素;當隊列滿時,往隊列里存放元素的操作也會被阻塞,直到有元素被從隊列中取出(以上的操作都是基于不同的線程來說的,線程在對阻塞隊列進程操作時會被阻塞)
【設計模式】生產(chǎn)者消費者模型
示例代碼:基于阻塞隊列的生產(chǎn)者消費者模型代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-415988.html

到了這里,關于【設計模式】生產(chǎn)者消費者模型的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 線程同步--生產(chǎn)者消費者模型--單例模式線程池

    線程同步--生產(chǎn)者消費者模型--單例模式線程池

    條件變量是 線程間共享的全局變量 ,線程間可以通過條件變量進行同步控制 條件變量的使用必須依賴于互斥鎖以確保線程安全,線程申請了互斥鎖后,可以調(diào)用特定函數(shù) 進入條件變量等待隊列(同時釋放互斥鎖) ,其他線程則可以通過條件變量在特定的條件下喚醒該線程( 喚醒后線

    2024年01月20日
    瀏覽(22)
  • C# 快速寫入日志 不卡線程 生產(chǎn)者 消費者模式

    C# 快速寫入日志 不卡線程 生產(chǎn)者 消費者模式

    有這樣一種場景需求,就是某個方法,對耗時要求很高,但是又要記錄日志到數(shù)據(jù)庫便于分析,由于訪問數(shù)據(jù)庫基本都要幾十毫秒,可在方法里寫入BlockingCollection,由另外的線程寫入數(shù)據(jù)庫。 可以看到,在我的機子上面,1ms寫入了43條日志。

    2024年02月15日
    瀏覽(22)
  • go語言中實現(xiàn)生產(chǎn)者-消費者模式有哪些方法呢

    本文將介紹在 Go 語言中實現(xiàn)生產(chǎn)者消費者模式的多種方法,并重點探討了通道、條件變量的適用場景和優(yōu)缺點。我們將深入討論這些方法的特點,以幫助開發(fā)者根據(jù)應用程序需求選擇最適合的方式。通過靈活運用 Go 語言提供的并發(fā)原語,我們能夠?qū)崿F(xiàn)高效、可靠的生產(chǎn)者消

    2024年02月05日
    瀏覽(15)
  • 【Rust 基礎篇】Rust 通道實現(xiàn)單個消費者多個生產(chǎn)者模式

    在 Rust 中,我們可以使用通道(Channel)來實現(xiàn)單個消費者多個生產(chǎn)者模式,簡稱為 MPMC。MPMC 是一種常見的并發(fā)模式,適用于多個線程同時向一個通道發(fā)送數(shù)據(jù),而另一個線程從通道中消費數(shù)據(jù)的場景。本篇博客將詳細介紹 Rust 中單個消費者多個生產(chǎn)者模式的實現(xiàn)方法,包含

    2024年02月16日
    瀏覽(28)
  • 【課設】生產(chǎn)者-消費者問題算法 的設計與實現(xiàn)

    【課設】生產(chǎn)者-消費者問題算法 的設計與實現(xiàn)

    題目:生產(chǎn)者-消費者問題算法 的設計與實現(xiàn) 目???? 錄 1. 課題概述 ... 2 2. 合作分工 ... 2 3. 相關知識 ... 2 4. 系統(tǒng)分析 ... 2 5. 系統(tǒng)設計 ... 2 6. 系統(tǒng)運行測試界面截圖 ... 2 7. 總結與心得體會 ... 2 8. 源程序清單 ... 2 ? 1.??? 課題概述 1.1設計的目的和要求; 在現(xiàn)代軟件業(yè)的發(fā)

    2024年02月08日
    瀏覽(16)
  • 高效協(xié)作處理緩存清理需求:生產(chǎn)者-消費者模式助力多模塊緩存管理

    高效協(xié)作處理緩存清理需求:生產(chǎn)者-消費者模式助力多模塊緩存管理

    在現(xiàn)代應用系統(tǒng)中,緩存是提高性能和減少數(shù)據(jù)庫負載的重要手段之一。然而,緩存的數(shù)據(jù)在某些情況下可能會過期或者變得無效,因此需要及時進行清理。在復雜的應用系統(tǒng)中,可能有多個系統(tǒng)、多個模塊產(chǎn)生緩存清理需求,而這些系統(tǒng)、模塊之間的清理任務需要高效的協(xié)

    2024年02月15日
    瀏覽(31)
  • Spring Boot 整合kafka:生產(chǎn)者ack機制和消費者AckMode消費模式、手動提交ACK

    Kafka 生產(chǎn)者的 ACK 機制指的是生產(chǎn)者在發(fā)送消息后,對消息副本的確認機制。ACK 機制可以幫助生產(chǎn)者確保消息被成功寫入 Kafka 集群中的多個副本,并在需要時獲取確認信息。 Kafka 提供了三種 ACK 機制的配置選項,分別是: acks=0:生產(chǎn)者在成功將消息發(fā)送到網(wǎng)絡緩沖區(qū)后即視

    2024年02月04日
    瀏覽(28)
  • 【Linux】生產(chǎn)者消費者模型:基于阻塞隊列和環(huán)形隊列 | 單例模式線程池

    【Linux】生產(chǎn)者消費者模型:基于阻塞隊列和環(huán)形隊列 | 單例模式線程池

    死鎖是指在一組進程中的各個進程均占有不會釋放的資源,但因互相申請被其他進程所站用不會釋放的資源而處于的一種永久等待狀態(tài)。 當多線程并發(fā)執(zhí)行并都需要訪問臨界資源時,因為每個線程都是不同的執(zhí)行流,這就有可能 導致數(shù)據(jù)不一致問題 ,為了避免此問題的發(fā)生

    2024年01月24日
    瀏覽(25)
  • 7.5.tensorRT高級(2)-RAII接口模式下的生產(chǎn)者消費者多batch實現(xiàn)

    7.5.tensorRT高級(2)-RAII接口模式下的生產(chǎn)者消費者多batch實現(xiàn)

    杜老師推出的 tensorRT從零起步高性能部署 課程,之前有看過一遍,但是沒有做筆記,很多東西也忘了。這次重新擼一遍,順便記記筆記。 本次課程學習 tensorRT 高級-RAII 接口模式下的生產(chǎn)者消費者多 batch 實現(xiàn) 課程大綱可看下面的思維導圖 這節(jié)課我們利用上節(jié)課學到的 RAII

    2024年02月12日
    瀏覽(21)
  • 生產(chǎn)者-消費者模型

    生產(chǎn)者-消費者模型

    目錄 1、生產(chǎn)者-消費者模型是什么 2、Java中的實現(xiàn) 3、應用于消息隊列 3.1 引入依賴 3.2?rabbitmq網(wǎng)站新建隊列queue 3.3 模塊中配置application.yml 3.4 生產(chǎn)者實現(xiàn)類 3.5 單元測試,發(fā)送msg到rabbitmq的隊列(my_simple_queue) 3.6 消費者實現(xiàn)類 3.7?從rabbitmq隊列(my_simple_queue)消費數(shù)據(jù) 3.8 隊列的配

    2024年02月06日
    瀏覽(19)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包