簡體   English   中英

Boost.asio:我可以從一個線程同時執行async_read和async_write嗎?

[英]Boost.asio: can I do async_read and async_write simultaneously from one thread?

我已經讀過不建議對來自不同線程的套接字進行多次操作。 但是,如果我從同一個線程socket.async_read和下一個socket.async_write調用(不等待前一個完成)怎么辦? 當其中一項操作完成后,我可以預見到正確的回調將會運行嗎?

我發現是的,你可以在同一個套接字上有一個掛起的async_read和一個掛起的async_write而沒有問題。 當您調用io_service::run()方法時,回調將按預期完成。

在同一個套接字上發出多個async_reads,或在同一個套接字上發出多個async_writes,可能會導致意外行為,具體取決於所涉及的套接字類型。 特別是,在同一個TCP套接字上使用多個async_writes會導致數據以與您原先預期不同的順序發出,並且數據發送的混合。 在UDP中,它可能更合理,但我仍然建議反對它。

暫無
暫無

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

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