[英]Boost.Asio Asynchronous TCP client and multi-threading
我的應用程序是一個與Boost.Asio聊天客戶端示例非常相似的TCP客戶端 。
我添加了幾個單獨的線程,它們調用chat_client :: write。 這是否意味着我必須向do_write或handle_write添加鎖定機制? 有什么推薦的方法嗎?
不,在那種情況下(一般而言)您無需鎖定它。 僅從運行io_service的線程處理事件。 如果僅僅是一個,則不需要鎖定。 將新消息post()發送到io_service已經是來自多個調用線程的線程安全的。
在您的特定示例中,您可能希望按值獲取chat_message而不是按引用,或者在io_service線程中使用它之前,它可能超出post()線程中的范圍。
如果由於共享資源或其他原因需要某種形式的鎖定,則應該看看strands 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.