网络模块(客户端的连接动作)
生活随笔
收集整理的這篇文章主要介紹了
网络模块(客户端的连接动作)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一個客戶端連接網絡模塊工作(一個連接的過程)
監聽線程收到一個連接后像輪詢線程的連接隊列中push一個conn_queue_item,然后向soketpair中寫入一個字節
此時子線程就是自動調用設置的事件,然后從連接隊列中pop一個socket
然后創建一個機遇socket的bufferevent
在createChannel中回調
void TCPServer::on_connect(int channel_id)
{packet pkt;pkt.size = (int)link_stat::link_connected;pkt.channel_id = channel_id;pkt.is_data = false;from_net_push_pkt(pkt);//向無鎖隊列中插入一個包
}
在net初始化的過程中創建了一個線程,專門從net無鎖隊列中取包,然后放入共享內存中
具體:在net線程中從TcpServer的無鎖隊列中取出包,然后放入共享內存中
libevent連接的回調把包放入無鎖隊列,然后net線程從無鎖隊列中取包放入共享內存中,這里面沒有涉及到net模塊的內存池
?
轉載于:https://www.cnblogs.com/zzyoucan/p/4072159.html
總結
以上是生活随笔為你收集整理的网络模块(客户端的连接动作)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MFC窗口颜色的设置
- 下一篇: ffmpeg源码分析四:transcod