中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

網(wǎng)站建設(shè)旗幟條幅app推廣30元一單

網(wǎng)站建設(shè)旗幟條幅,app推廣30元一單,采購(gòu)平臺(tái)排名,好網(wǎng)站建設(shè)網(wǎng)站5.4、服務(wù)器編程基本框架和兩種高效的事件處理模式 1.服務(wù)器編程基本框架2.兩種高效的事件處理模式①Reactor模式②Proactor模式③模擬Proactor模式 1.服務(wù)器編程基本框架 模塊功能I/O 處理單元處理客戶連接,讀寫網(wǎng)絡(luò)數(shù)據(jù)邏輯單元業(yè)務(wù)進(jìn)程或線程網(wǎng)絡(luò)存儲(chǔ)單元數(shù)據(jù)庫(kù)、…

5.4、服務(wù)器編程基本框架和兩種高效的事件處理模式

  • 1.服務(wù)器編程基本框架
  • 2.兩種高效的事件處理模式
    • ①Reactor模式
    • ②Proactor模式
    • ③模擬Proactor模式

1.服務(wù)器編程基本框架

在這里插入圖片描述

模塊功能
I/O 處理單元處理客戶連接,讀寫網(wǎng)絡(luò)數(shù)據(jù)
邏輯單元業(yè)務(wù)進(jìn)程或線程
網(wǎng)絡(luò)存儲(chǔ)單元數(shù)據(jù)庫(kù)、文件或緩存
請(qǐng)求隊(duì)列各單元之間的通信方式
  1. I/O 處理單元是服務(wù)器管理客戶連接的模塊。它通常要完成以下工作:等待并接受新的客戶連接,接收客戶數(shù)據(jù),將服務(wù)器響應(yīng)數(shù)據(jù)返回給客戶端。但是數(shù)據(jù)的收發(fā)不一定在 I/O 處理單元中執(zhí)行,也可能在邏輯單元中執(zhí)行,具體在何處執(zhí)行取決于事件處理模式。
  2. 一個(gè)邏輯單元通常是一個(gè)進(jìn)程或線程。它分析并處理客戶數(shù)據(jù),然后將結(jié)果傳遞給 I/O 處理單元或者直接發(fā)送給客戶端(具體使用哪種方式取決于事件處理模式)。服務(wù)器通常擁有多個(gè)邏輯單元,以實(shí)現(xiàn)對(duì)多個(gè)客戶任務(wù)的并發(fā)處理。
  3. 網(wǎng)絡(luò)存儲(chǔ)單元可以是數(shù)據(jù)庫(kù)、緩存和文件,但不是必須的。
  4. 請(qǐng)求隊(duì)列是各單元之間的通信方式的抽象。I/O 處理單元接收到客戶請(qǐng)求時(shí),需要以某種方式通知一個(gè)邏輯單元來處理該請(qǐng)求。同樣,多個(gè)邏輯單元同時(shí)訪問一個(gè)存儲(chǔ)單元時(shí),也需要采用某種機(jī)制來協(xié)調(diào)處理競(jìng)態(tài)條件。請(qǐng)求隊(duì)列通常被實(shí)現(xiàn)為池的一部分。

2.兩種高效的事件處理模式

服務(wù)器程序通常需要處理三類事件:I/O 事件、信號(hào)定時(shí)事件。有兩種高效的事件處理模式:ReactorProactor,同步 I/O 模型通常用于實(shí)現(xiàn) Reactor 模式,異步 I/O 模型通常用于實(shí)現(xiàn) Proactor 模式。

①Reactor模式

要求主線程(I/O處理單元) 只負(fù)責(zé)監(jiān)聽文件描述符上是否有事件發(fā)生,有的話就立即將該事件通知工作線程(邏輯單元),將 socket 可讀可寫事件放入請(qǐng)求隊(duì)列,交給工作線程處理。除此之外,主線程不做任何其他實(shí)質(zhì)性的工作。讀寫數(shù)據(jù),接受新的連接,以及處理客戶請(qǐng)求均在工作線程中完成。

  • 使用同步 I/O(以 epoll_wait 為例)實(shí)現(xiàn)的 Reactor 模式的工作流程是:
    1. 主線程往 epoll 內(nèi)核事件表中注冊(cè) socket 上的讀就緒事件。
    2. 主線程調(diào)用 epoll_wait 等待 socket 上有數(shù)據(jù)可讀。
    3. 當(dāng) socket 上有數(shù)據(jù)可讀時(shí), epoll_wait 通知主線程。主線程則將 socket 可讀事件放入請(qǐng)求隊(duì)列。
    4. 睡眠在請(qǐng)求隊(duì)列上的某個(gè)工作線程被喚醒,它從 socket 讀取數(shù)據(jù),并處理客戶請(qǐng)求,然后往 epoll 內(nèi)核事件表中注冊(cè)該 socket 上的寫就緒事件。
    5. 當(dāng)主線程調(diào)用 epoll_wait 等待 socket 可寫。
    6. 當(dāng) socket 可寫時(shí),epoll_wait 通知主線程。主線程將 socket 可寫事件放入請(qǐng)求隊(duì)列。
    7. 睡眠在請(qǐng)求隊(duì)列上的某個(gè)工作線程被喚醒,它往 socket 上寫入服務(wù)器處理客戶請(qǐng)求的結(jié)果。
      在這里插入圖片描述

②Proactor模式

Proactor 模式將所有 I/O 操作都交給主線程和內(nèi)核來處理(進(jìn)行讀、寫),工作線程僅僅負(fù)責(zé)業(yè)務(wù)邏
輯。

  • 使用異步 I/O 模型(以 aio_readaio_write 為例)實(shí)現(xiàn)的 Proactor 模式的工作流程是:
    1. 主線程調(diào)用 aio_read 函數(shù)向內(nèi)核注冊(cè) socket 上的讀完成事件,并告訴內(nèi)核用戶讀緩沖區(qū)的位置,以及讀操作完成時(shí)如何通知應(yīng)用程序(這里以信號(hào)為例)。
    2. 主線程繼續(xù)處理其他邏輯。
    3. 當(dāng) socket 上的數(shù)據(jù)被讀入用戶緩沖區(qū)后,內(nèi)核將向應(yīng)用程序發(fā)送一個(gè)信號(hào),以通知應(yīng)用程序數(shù)據(jù)已經(jīng)可用。
    4. 應(yīng)用程序預(yù)先定義好的信號(hào)處理函數(shù)選擇一個(gè)工作線程來處理客戶請(qǐng)求。工作線程處理完客戶請(qǐng)求后,調(diào)用 aio_write 函數(shù)向內(nèi)核注冊(cè) socket 上的寫完成事件,并告訴內(nèi)核用戶寫緩沖區(qū)的位置,以及寫操作完成時(shí)如何通知應(yīng)用程序。
    5. 主線程繼續(xù)處理其他邏輯。
    6. 當(dāng)用戶緩沖區(qū)的數(shù)據(jù)被寫入 socket 之后,內(nèi)核將向應(yīng)用程序發(fā)送一個(gè)信號(hào),以通知應(yīng)用程序數(shù)據(jù)已經(jīng)發(fā)送完畢。
    7. 應(yīng)用程序預(yù)先定義好的信號(hào)處理函數(shù)選擇一個(gè)工作線程來做善后處理,比如決定是否關(guān)閉 socket
      在這里插入圖片描述

③模擬Proactor模式

使用同步 I/O 方式模擬出 Proactor 模式。原理是:主線程執(zhí)行數(shù)據(jù)讀寫操作,讀寫完成之后,主線程向工作線程通知這一”完成事件“。那么從工作線程的角度來看,它們就直接獲得了數(shù)據(jù)讀寫的結(jié)果,接下來要做的只是對(duì)讀寫的結(jié)果進(jìn)行邏輯處理。

  • 使用同步 I/O 模型(以 epoll_wait為例)模擬出的 Proactor 模式的工作流程如下:
    1. 主線程往 epoll 內(nèi)核事件表中注冊(cè) socket 上的讀就緒事件。
    2. 主線程調(diào)用 epoll_wait 等待 socket 上有數(shù)據(jù)可讀
    3. 當(dāng) socket 上有數(shù)據(jù)可讀時(shí),epoll_wait 通知主線程。主線程socket 循環(huán)讀取數(shù)據(jù),直到?jīng)]有更多數(shù)據(jù)可讀,然后將讀取到的數(shù)據(jù)封裝成一個(gè)請(qǐng)求對(duì)象并插入請(qǐng)求隊(duì)列。
    4. 睡眠在請(qǐng)求隊(duì)列上的某個(gè)工作線程被喚醒,它獲得請(qǐng)求對(duì)象并處理客戶請(qǐng)求,然后往 epoll 內(nèi)核事件表中注冊(cè) socket 上的寫就緒事件。
    5. 主線程調(diào)用 epoll_wait 等待 socket 可寫。
    6. 當(dāng) socket 可寫時(shí),epoll_wait 通知主線程。主線程往 socket 上寫入服務(wù)器處理客戶請(qǐng)求的結(jié)果。
      在這里插入圖片描述
http://www.risenshineclean.com/news/56657.html

相關(guān)文章:

  • 人民日?qǐng)?bào)網(wǎng)站誰做的抖音seo排名系統(tǒng)哪個(gè)好用
  • angular2是做網(wǎng)站的還是手機(jī)的百度風(fēng)云榜小說排行榜歷屆榜單
  • 沒有備案的網(wǎng)站怎么做淘寶客產(chǎn)品軟文范例800字
  • 網(wǎng)站后臺(tái)管理系統(tǒng)下載360公司官網(wǎng)首頁(yè)
  • 網(wǎng)站建設(shè)專業(yè)課程網(wǎng)絡(luò)營(yíng)銷與策劃
  • 網(wǎng)站只有一個(gè)首頁(yè)單頁(yè)面怎么做排名域名官網(wǎng)
  • 做網(wǎng)站app需要多少錢百度推廣運(yùn)營(yíng)
  • 談?wù)剬?duì)網(wǎng)站開發(fā)的理解站長(zhǎng)工具seo綜合查詢?cè)趺词褂玫?/a>
  • wordpress網(wǎng)站全過程谷歌seo最好的公司
  • 微信小程序外聯(lián)網(wǎng)站品牌廣告視頻
  • 微信開發(fā)者中心aso優(yōu)化貼吧
  • 部隊(duì)網(wǎng)站建設(shè)多少錢東莞網(wǎng)站seo公司哪家大
  • 網(wǎng)站建設(shè)合作流程搜索app下載
  • 網(wǎng)站日常推廣怎么做整合營(yíng)銷傳播方法包括
  • 域名購(gòu)買網(wǎng)站網(wǎng)絡(luò)銷售是干嘛的
  • 珠海百度推廣優(yōu)化seo排名優(yōu)化資源
  • 網(wǎng)站懸浮代碼成都網(wǎng)站推廣
  • 網(wǎng)站建設(shè)費(fèi)用推薦網(wǎng)絡(luò)專業(yè)網(wǎng)絡(luò)服務(wù)商電話
  • 網(wǎng)站建設(shè)改版升級(jí)seo雙標(biāo)題軟件
  • 網(wǎng)站開發(fā)哪里關(guān)鍵詞搜索技巧
  • wordpress 導(dǎo)入 附件seo系統(tǒng)源碼
  • 做網(wǎng)站前臺(tái)需要什么技能模板網(wǎng)站建設(shè)
  • 網(wǎng)站設(shè)計(jì)制作費(fèi)用google網(wǎng)頁(yè)版
  • 外包推廣服務(wù)搜索引擎優(yōu)化專員
  • 做網(wǎng)站用那一種語(yǔ)言最好推廣營(yíng)銷
  • 百度廣告平臺(tái)河北seo推廣
  • 教做面包的網(wǎng)站seo營(yíng)銷方案
  • 旅行社建網(wǎng)站如何自己做網(wǎng)站
  • wordpress香港主機(jī)推薦北京seo排名廠家
  • nat123做網(wǎng)站廈門百度快速優(yōu)化排名