簡體   English   中英

Boost.Asio異步TCP客戶端和多線程

[英]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.

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