簡體   English   中英

使用async_read的boost.asio多線程I / O服務器

[英]boost.asio multi-thread I/O server with async_read

基本邏輯如下

main_thread:

for(;;){
接受套接字
async_read head(包長度),綁定到head_handler
io_service.run()}

head_handler(非螺紋):

async_read body(使用從頭部讀取的長度),綁定到body_handler

body_handler(非螺紋):

將消息解析為Request對象(自定義類)。
push請求request_pool

read_thread:

for(;;){
如果request_pool不為空(否則鎖定){執行請求描述的操作}}

所以我有一個使用上述邏輯的簡單回聲服務器。 它打印出傳入的任何消息。但是,只會顯示第一條消息,其他所有消息都會正確打印出“xxx.xxx.xxx.xxx已連接”消息。但是沒有打印消息

如果您不發出任何異步。 body_handler運行, io_service用完了, io_service::run()退出了。 在對io_service::run()任何后續調用之前,您必須調用io_service::reset()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM