6
我讀過,不建議在不同的線程插座多個操作。但是,如果我從同一線程調用socket.async_read和next socket.async_write(而不等待前一個完成)呢?當我完成其中一個操作時,我可以否認適當的回調會運行嗎?Boost.Asio的:我可以做async_read和ASYNC_WRITE同時從一個線程?
我讀過,不建議在不同的線程插座多個操作。但是,如果我從同一線程調用socket.async_read和next socket.async_write(而不等待前一個完成)呢?當我完成其中一個操作時,我可以否認適當的回調會運行嗎?Boost.Asio的:我可以做async_read和ASYNC_WRITE同時從一個線程?
我發現,是的,你可以有一個未決async_read
和一個待定同一插座上async_write
沒有問題。當您撥打io_service::run()
方法時,回調將按預期完成。
發出相同插座,或在同一插座上的多個async_writes多個async_reads,可能導致意外的行爲,這取決於插座所涉及的類型。特別是,在同一個TCP套接字上使用多個async_writes可能會導致數據以不同於最初預期的順序發送,並且會混淆數據發送。在UDP中,它可能更合理,但我仍然會推薦它。
你要問關於TCP套接字? –