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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Reactor构架模式--转载

發布時間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Reactor构架模式--转载 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece76310468a3b404380143c86964868d4e419ce3b46414565e3b92d3f130ed8c46b6776f50f03b4e4732f77552f&p=976ada15d9c341ad1cbe9b7c515486&newp=99769a4786cc41af5aa7ca28425285231610db2151d4d517&user=baidu

Reactor框架是ACE各個框架中最基礎的一個框架,其他框架都或多或少地用到了Reactor框架。本章先分析Reactor構架模式的基本原理,然后利用ACE Reactor框架實現我們在第1章分析的服務端程序,最后分析Reactor框架的實現。?
Reactor框架的內容非常多,我們并沒有將所有功能“一鍋端”,而是按照Reactor框架處理的事件類型逐一進行分析。Reactor框架支持的事件類型包括I/O事件、信號量事件、定時器事件和Notify事件。我們的示例應用屬于I/O事件,所以先從I/O事件開始分析。?
2.1?? Reactor構架模式?
對每一個構架模式的分析,我們都使用參考文獻[14]的分析風格,著重分析意圖、上下文、問題、解決方案、結構和實現6個方面的內容。而實現就是ACE源代碼。?
1. 意圖?
在事件驅動的應用中,將一個或多個客戶的服務請求分離(demultiplex)和調度(dispatch)給應用程序。?
2. 上下文?
在事件驅動的應用中,同步地、有序地處理同時接收的多個服務請求。?
3. 問題?
在分布式系統尤其是服務器這一類事件驅動應用中,雖然這些請求最終會被序列化地處理,但是必須時刻準備著處理多個同時到來的服務請求。在實際應用中,這些請求總是通過一個事件(如CONNECTOR、READ、WRITE等)來表示的。在有序地處理這些服務請求之前,應用程序必須先分離和調度這些同時到達的事件。為了有效地解決這個問題,我們需要做到以下4方面:?
q 為了提高系統的可測量性和反應時間,應用程序不能長時間阻塞在某個事件源上而停止對其他事件的處理,這樣會嚴重降低對客戶端的響應度。?
q 為了提高吞吐量,任何沒有必要的上下文切換、同步和CPU之間的數據移動都要避免。?
q 引進新的服務或改良已有的服務都要對既有的事件分離和調度機制帶來盡可能小的影響。?
q 大量的應用程序代碼需要隱藏在復雜的多線程和同步機制之后。?
4. 解決方案?
在一個或多個事件源上等待事件的到來,例如,一個已經連接的Socket描述符就是一個事件源。將事件的分離和調度整合到處理它的服務中,而將分離和調度機制從應用程序對特定事件的處理中分離開,也就是說分離和調度機制與特定的應用程序無關。?
具體來說,每個應用程序提供的每個服務都有一個獨立的事件處理器與之對應。由事件處理器處理來自事件源的特定類型的事件。每個事件處理器都事先注冊到Reactor管理器中。Reactor管理器使用同步事件分離器在一個或多個事件源中等待事件的發生。當事件發生后,同步事件分離器通知Reactor管理器,最后由Reactor管理器調度和該事件相關的事件處理器來完成請求的服務。?
5. 結構?
在Reactor模式中,有5個關鍵的參與者。?
q 描述符(handle):由操作系統提供,用于識別每一個事件,如Socket描述符、文件描述符等。在Linux中,它用一個整數來表示。事件可以來自外部,如來自客戶端的連接請求、數據等。事件也可以來自內部,如定時器事件。?
q 同步事件分離器(demultiplexer):是一個函數,用來等待一個或多個事件的發生。調用者會被阻塞,直到分離器分離的描述符集上有事件發生。Linux的select函數是一個經常被使用的分離器。?
q 事件處理器接口(event handler):是由一個或多個模板函數組成的接口。這些模板函數描述了和應用程序相關的對某個事件的操作。?
q 具體的事件處理器:是事件處理器接口的實現。它實現了應用程序提供的某個服務。每個具體的事件處理器總和一個描述符相關。它使用描述符來識別事件、識別應用程序提供的服務。?
q Reactor管理器(reactor):定義了一些接口,用于應用程序控制事件調度,以及應用程序注冊、刪除事件處理器和相關的描述符。它是事件處理器的調度核心。Reactor管理器使用同步事件分離器來等待事件的發生。一旦事件發生,Reactor管理器先是分離每個事件,然后調度事件處理器,最后調用相關的模板函數來處理這個事件。?
通過上述分析,我們注意到,是Reactor管理器而不是應用程序負責等待事件、分離事件和調度事件。實際上,Reactor管理器并沒有被具體的事件處理器調用,而是管理器調度具體的事件處理器,由事件處理器對發生的事件做出處理。這就是類似Hollywood原則的“反向控制”。應用程序要做的僅僅是實現一個具體的事件處理器,然后把它注冊到Reactor管理器中。接下來的工作由管理器來完成。這些參與者的相互關系如圖2-1所示。?
現在結合第1章分析的框架五元素來看一下Reactor構架模式的參與者與框架五元素之間的關系:Reactor構架模式的具體實現對應了元素1;事件處理器接口對應元素2;具體的事件處理器對應元素3;Reactor管理器使用了Hollywood原則,可以認為和元素5對應;元素4的功能相對不明顯,沒有明確的對應關系。?
如果還是沒有理解Reactor構架模式,沒有關系,源代碼會說明所有問題。此時可再分析一遍Reactor構架模式,然后繼續以下內容。?
?
?
圖2-1?? Reactor構架模式結構圖

轉載于:https://www.cnblogs.com/davidwang456/p/3790442.html

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的Reactor构架模式--转载的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 舐丝袜脚视频丨vk | 自拍偷拍色| 青青视频网| 视频在线91 | 黄视频免费在线观看 | 国产美女视频免费观看下载软件 | 欧美熟妇交换久久久久久分类 | 亚洲天堂男人网 | 日产精品久久久 | 亚洲一区二区三区黄色 | 亚州中文 | 中文字幕区 | 日韩精品播放 | 朝桐光av在线 | 国产一级片网站 | 黄色性视频 | 性生活视屏 | 人人插人人澡 | 久久久免费精品视频 | 国产亚洲精品成人av在线 | 乡村乱淫 | www.夜夜爱 | 久久久国产精品久久久 | 日日夜夜网 | 久久三 | 91精品91久久久中77777 | 女女同性高清片免费看 | 久久66热这里只有精品 | www国产在线| 制服丝袜一区二区三区 | 综综综综合网 | jzjzjzjzj亚洲成熟少妇 | 97免费观看视频 | 亚洲欧美精品在线观看 | 欧美一区,二区 | www黄色av| 欧美黄色一级大片 | 福利视频在线播放 | 日本一区二区三区视频在线播放 | 操她视频网站 | 一本色道久久综合精品婷婷 | 亚洲综合色吧 | 性饥渴的农村熟妇 | 国产冒白浆 | 免费a在线 | 丁香伊人网 | 99在线小视频 | 天堂网av中文字幕 | 日韩一级片一区二区 | 亚洲AV无码成人精品区明星换面 | 国内精品在线播放 | 国产精品久久久久久久久久久免费看 | 国产草草影院ccyycom | 欧美天堂在线 | 影音先锋中文字幕一区二区 | 成人一区二区三区四区 | 欧美性视频在线 | 成年人黄色大片 | 999国产在线 | 天天草av | 国产黄色一级片视频 | 亚洲性欧美色 | 波多野结衣一区二区三区高清av | 久久影院一区 | 日本少妇影院 | 一区二区三区四区五区六区 | 影音先锋激情 | 精品无码黑人又粗又大又长 | 91精品在线一区 | 老司机成人网 | 国产美女自慰在线观看 | 色图一区 | 国产一区二区三区四区视频 | 先锋av资源网站 | 成人激情视频在线观看 | www亚洲天堂 | 日大逼 | 欧美日韩色 | 麻豆国产视频 | 麻豆精品一区二区 | 性欧美一区二区 | 日韩美女黄色片 | 亚洲精品视频三区 | 激情天天| 色www亚洲国产张柏芝 | 色妞色视频一区二区三区四区 | 99热首页 | 伊人在线 | 黄色三级在线观看 | 一本色道久久综合亚洲 | 亚洲国产mv | 一区二区三区亚洲 | 玖玖精品视频 | 欧美一级二级在线观看 | av影片在线看 | 成人福利免费视频 | 亚洲欧美精品一区二区三区 | 青青超碰 | 国产日韩欧美亚洲 |