這是學(xué)習(xí)網(wǎng)絡(luò)編程后寫(xiě)的一個(gè)練手的小程序,可以幫助復(fù)習(xí)I/O模型,epoll使用,線程池,HTTP協(xié)議等內(nèi)容。
程序代碼是基于《Linux高性能服務(wù)器編程》一書(shū)編寫(xiě)的。
首先回顧程序中的核心內(nèi)容和主要問(wèn)題,最后給出相關(guān)代碼。
0. 功能和I/O模型
實(shí)現(xiàn)簡(jiǎn)易的HTTP服務(wù)端,現(xiàn)僅支持GET方法,通過(guò)瀏覽器訪問(wèn)可以返回相應(yīng)內(nèi)容。
I/O模型采用Reactor(I/O復(fù)用 + 非阻塞I/O) + 線程池。 使用epoll事件循環(huán)用作事件通知,如果listenfd上可讀,則調(diào)用accept,把新建的fd加入epoll中;
是已連接sockfd,將其加入到線程池中由工作線程競(jìng)爭(zhēng)執(zhí)行任務(wù)。
1. 線程池怎么實(shí)現(xiàn)?
程序采用c++編寫(xiě),要自己封裝一個(gè)簡(jiǎn)易的線程池類(lèi)。大致思路是創(chuàng)建固定數(shù)目的線程(如跟核數(shù)相同),然后類(lèi)內(nèi)部維護(hù)一個(gè)生產(chǎn)者—消費(fèi)者隊(duì)列。
延伸閱讀
- ssh框架 2016-09-30
- 阿里移動(dòng)安全 [無(wú)線安全]玩轉(zhuǎn)無(wú)線電——不安全的藍(lán)牙鎖 2017-07-26
- 消息隊(duì)列NetMQ 原理分析4-Socket、Session、Option和Pipe 2024-03-26
- Selective Search for Object Recognition 論文筆記【圖片目標(biāo)分割】 2017-07-26
- 詞向量-LRWE模型-更好地識(shí)別反義詞同義詞 2017-07-26
- 從棧不平衡問(wèn)題 理解 calling convention 2017-07-26
- php imagemagick 處理 圖片剪切、壓縮、合并、插入文本、背景色透明 2017-07-26
- Swift實(shí)現(xiàn)JSON轉(zhuǎn)Model - HandyJSON使用講解 2017-07-26
- 阿里移動(dòng)安全 Android端惡意鎖屏勒索應(yīng)用分析 2017-07-26
- 集合結(jié)合數(shù)據(jù)結(jié)構(gòu)來(lái)看看(二) 2017-07-26