[英]How do I create multiple C++ threads without blocking the main thread using join()?
我在C ++中有一個簡單的TCP客戶端/服務器,我目前正在為每個連接用戶生成一個線程來處理消息,但是我遇到了一些問題,我不知道如何解決它們,因為我不熟悉標准的C ++穿線。
當客戶端連接到服務器時,將為該客戶端創建一個線程,直到它們使用類似的東西斷開連接
clientThread = thread(processMessages);
clientThread.join();
該線程將持續客戶端的生命周期。 由於我在此線程上調用了join(),當客戶端2連接而客戶端1仍然連接時,它被join()調用阻止。
刪除此join()調用意味着當客戶端斷開連接時,線程將被銷毀,從而導致出現terminate()錯誤,因為它可以連接。
如何在主線程可以繼續並接受新連接時,如何使此客戶端線程在后台進行處理?
只是展示如何存儲創建的thread
對象:
std::vector<std::thread> threads;
threads.emplace_back(processMessages);
...
for (auto & t : threads) t.join();
但是,正如其他人在評論中指出的那樣,為每個新連接創建一個線程可能不是最好的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.