国产亚洲精品福利在线无卡一,国产精久久一区二区三区,亚洲精品无码国模,精品久久久久久无码专区不卡

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

wordpress僅顯示標(biāo)題互聯(lián)網(wǎng)廣告優(yōu)化

wordpress僅顯示標(biāo)題,互聯(lián)網(wǎng)廣告優(yōu)化,wordpress建的網(wǎng)站嗎,哈爾濱疫情最新靜默文章目錄 一、LoopThreadPool模塊二、實(shí)現(xiàn)思想(一)管理(二)流程(三)功能設(shè)計(jì) 三、代碼 一、LoopThreadPool模塊 TcpServer模塊: 對(duì)所有模塊的整合,通過 tcpserver 模塊實(shí)例化的對(duì)象&…

文章目錄

  • 一、LoopThreadPool模塊
  • 二、實(shí)現(xiàn)思想
    • (一)管理
    • (二)流程
    • (三)功能設(shè)計(jì)
  • 三、代碼

一、LoopThreadPool模塊

在這里插入圖片描述

TcpServer模塊: 對(duì)所有模塊的整合,通過 tcpserver 模塊實(shí)例化的對(duì)象,可以非常簡單的完成一個(gè)服務(wù)器的搭建。
對(duì)前面所有子模塊的整合模塊,提供給用戶用于搭建一個(gè)高性能服務(wù)器的模塊!

二、實(shí)現(xiàn)思想

(一)管理

  1. Acceptor對(duì)象,創(chuàng)建一個(gè)監(jiān)聽套接字!
  2. EventLoop 對(duì)象,baseloop對(duì)象,實(shí)現(xiàn)對(duì)監(jiān)聽套接字的事件監(jiān)控!
  3. std::vector conns,實(shí)現(xiàn)對(duì)新建連接的管理!
  4. EventLoopPool 對(duì)象,創(chuàng)建loop線程池,對(duì)新建連接進(jìn)行事件監(jiān)控和處理!

(二)流程

流程:
1. 在TcpServer中實(shí)例一個(gè)Acceptor對(duì)象,以及一個(gè)EventLoop 對(duì)象(baseloop)
2. 將Acceptor 掛在baseloop 進(jìn)行事件監(jiān)控
3. 一旦Acceptor 對(duì)象就緒了可讀事件,則執(zhí)行時(shí)間回調(diào)函數(shù)獲取新建連接!
4. 對(duì)新連接,創(chuàng)造一個(gè) Connection 進(jìn)行管理!
5. 對(duì)新連接對(duì)應(yīng)的 Connection 設(shè)置功能回調(diào) (連接完成回調(diào),消息回調(diào),關(guān)閉回調(diào),任意事件監(jiān)控!)
6. 啟動(dòng)Connettion 的非活躍鏈接的超時(shí)銷毀功能
7. 將新連接對(duì)應(yīng)的Connection 掛到 LoopThreadPool 中的叢書線程對(duì)應(yīng)的Eventloop 中進(jìn)行事件監(jiān)控!
8. 一旦Connection對(duì)應(yīng)的鏈接就緒了可讀事件,則這個(gè)時(shí)候執(zhí)行讀事件回調(diào)函數(shù),讀取數(shù)據(jù),讀取完畢后調(diào)用TcpServer設(shè)置的消息回調(diào)!

(三)功能設(shè)計(jì)

  1. 設(shè)置從屬線程池?cái)?shù)量!
    2. 啟動(dòng)服務(wù)器
    3. 設(shè)置各種回調(diào)函數(shù)!(連接建立完成,消息,關(guān)閉,任意) 用戶設(shè)置給TcpServer TcpServer設(shè)置獲取的新連接!
    4. 是否啟動(dòng)非活躍連接超時(shí)銷毀功能
    5. 添加任務(wù)!

三、代碼

class TcpServer {private:uint64_t _next_id;      //這是一個(gè)自動(dòng)增長的連接ID,int _port;int _timeout;           //這是非活躍連接的統(tǒng)計(jì)時(shí)間---多長時(shí)間無通信就是非活躍連接bool _enable_inactive_release;//是否啟動(dòng)了非活躍連接超時(shí)銷毀的判斷標(biāo)志EventLoop _baseloop;    //這是主線程的EventLoop對(duì)象,負(fù)責(zé)監(jiān)聽事件的處理Acceptor _acceptor;    //這是監(jiān)聽套接字的管理對(duì)象LoopThreadPool _pool;   //這是從屬EventLoop線程池std::unordered_map<uint64_t, PtrConnection> _conns;//保存管理所有連接對(duì)應(yīng)的shared_ptr對(duì)象using ConnectedCallback = std::function<void(const PtrConnection&)>;using MessageCallback = std::function<void(const PtrConnection&, Buffer *)>;using ClosedCallback = std::function<void(const PtrConnection&)>;using AnyEventCallback = std::function<void(const PtrConnection&)>;using Functor = std::function<void()>;ConnectedCallback _connected_callback;MessageCallback _message_callback;ClosedCallback _closed_callback;AnyEventCallback _event_callback;private:void RunAfterInLoop(const Functor &task, int delay) {_next_id++;_baseloop.TimerAdd(_next_id, delay, task);}//為新連接構(gòu)造一個(gè)Connection進(jìn)行管理void NewConnection(int fd) {_next_id++;PtrConnection conn(new Connection(_pool.NextLoop(), _next_id, fd));conn->SetMessageCallback(_message_callback);conn->SetClosedCallback(_closed_callback);conn->SetConnectedCallback(_connected_callback);conn->SetAnyEventCallback(_event_callback);conn->SetSrvClosedCallback(std::bind(&TcpServer::RemoveConnection, this, std::placeholders::_1));if (_enable_inactive_release) conn->EnableInactiveRelease(_timeout);//啟動(dòng)非活躍超時(shí)銷毀conn->Established();//就緒初始化_conns.insert(std::make_pair(_next_id, conn));}void RemoveConnectionInLoop(const PtrConnection &conn) {int id = conn->Id();auto it = _conns.find(id);if (it != _conns.end()) {_conns.erase(it);}}//從管理Connection的_conns中移除連接信息void RemoveConnection(const PtrConnection &conn) {_baseloop.RunInLoop(std::bind(&TcpServer::RemoveConnectionInLoop, this, conn));}public:TcpServer(int port):_port(port), _next_id(0), _enable_inactive_release(false), _acceptor(&_baseloop, port),_pool(&_baseloop) {_acceptor.SetAcceptCallback(std::bind(&TcpServer::NewConnection, this, std::placeholders::_1));_acceptor.Listen();//將監(jiān)聽套接字掛到baseloop上}void SetThreadCount(int count) { return _pool.SetThreadCount(count); }void SetConnectedCallback(const ConnectedCallback&cb) { _connected_callback = cb; }void SetMessageCallback(const MessageCallback&cb) { _message_callback = cb; }void SetClosedCallback(const ClosedCallback&cb) {_closed_callback = cb; }void SetAnyEventCallback(const AnyEventCallback&cb) { _event_callback = cb; }void EnableInactiveRelease(int timeout) { _timeout = timeout; _enable_inactive_release = true; }//用于添加一個(gè)定時(shí)任務(wù)void RunAfter(const Functor &task, int delay) {_baseloop.RunInLoop(std::bind(&TcpServer::RunAfterInLoop, this, task, delay));}void Start() { _pool.Create(); _baseloop.Start(); }
};
http://aloenet.com.cn/news/35788.html

相關(guān)文章:

  • 個(gè)人網(wǎng)站 不用備案朋友圈廣告
  • 百度做一個(gè)網(wǎng)站多少錢專業(yè)制作網(wǎng)頁的公司
  • o2o網(wǎng)站開發(fā)框架長春seo排名優(yōu)化
  • 東莞哪家做網(wǎng)站比較好北京網(wǎng)上推廣
  • 做有網(wǎng)被視頻網(wǎng)站有哪些銷售平臺(tái)軟件有哪些
  • 成都網(wǎng)站搭建公司哪家好阿里大數(shù)據(jù)分析平臺(tái)
  • 網(wǎng)站建設(shè)丨找王科杰專業(yè)好的seo網(wǎng)站
  • 怎樣做網(wǎng)站外鏈seo的中文意思
  • 怎么做才能發(fā)布網(wǎng)站網(wǎng)站域名購買
  • 淘客網(wǎng)站是怎么做的中國seo關(guān)鍵詞優(yōu)化工具
  • 濟(jì)南做網(wǎng)站的公司電腦全自動(dòng)掛機(jī)賺錢
  • 公務(wù)員建設(shè)文化與道德網(wǎng)站營銷網(wǎng)站優(yōu)化推廣
  • 廣西網(wǎng)站建設(shè)蘇州網(wǎng)站制作
  • 做傳銷網(wǎng)站違法嗎品牌推廣策略分析
  • 做自己的網(wǎng)站可以賺錢嗎市場推廣方案怎么寫
  • 織夢(mèng)做的網(wǎng)站 xampp百度seo排名主要看啥
  • 做外貿(mào)開通哪個(gè)網(wǎng)站好seo優(yōu)化排名易下拉用法
  • 淘寶客做軟件網(wǎng)站app廣州百度競價(jià)托管
  • 做網(wǎng)站需要自備服務(wù)器嗎市場營銷培訓(xùn)
  • 北京網(wǎng)站建設(shè) 優(yōu)化seo優(yōu)化專員
  • 做中醫(yī)藥網(wǎng)站有前景嗎山東企業(yè)網(wǎng)站建設(shè)
  • 網(wǎng)絡(luò)信息安全網(wǎng)站開發(fā)教程網(wǎng)站權(quán)重查詢接口
  • 網(wǎng)站建設(shè)win2012百度如何發(fā)布信息推廣
  • 用訂制音樂網(wǎng)站做的音樂算原創(chuàng)嗎人工智能培訓(xùn)班收費(fèi)標(biāo)準(zhǔn)
  • 網(wǎng)站建設(shè)規(guī)模與類別蘇州百度推廣排名優(yōu)化
  • b2b網(wǎng)站的功能上海快速優(yōu)化排名
  • 做分類網(wǎng)站用什么cms谷歌網(wǎng)頁版登錄入口
  • 云南網(wǎng)站優(yōu)化建站seo優(yōu)化點(diǎn)擊軟件
  • 四川航霖管理咨詢有限公司seo站長常用工具
  • 招聘網(wǎng)站的SEO怎么做網(wǎng)站推廣軟件費(fèi)用是多少