在我的程式中會連結許多的socket,我希望以輪詢的方式來詢問這些socket是否有收到
任何的訊息而不新增任何一條thread。
但是boost的asio下面的read似乎少了一個函式 ,那種可以立即返回又不block的read。
boost::asio::read 以及 socket.read_some 都會block直到指定的buffer讀滿,後來
我找到了下面這樣的寫法...
boost::asio::read(socket , buffer , boost::asio::transfer_at_least(0),error)
這曾經是我唯一的希望,他它卻失敗了。
我本來希望 trasnfer_at_least(0) 是可以讓這行read是以non-block的方式運行,但是
結果是 它永遠讀 0 byte 就立即返回。
目前採用的方式是boost::asio::read_until() 但,讓它如同readLine一樣的方式運行
但實在是不太保險的感覺
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.165.222.196
推
02/03 22:54, , 1F
02/03 22:54, 1F
→
02/03 22:58, , 2F
02/03 22:58, 2F
→
02/03 22:59, , 3F
02/03 22:59, 3F