我在C++中有一个简单的TCP客户机/服务器,我目前正在为每个连接的用户生成一个线程来处理消息,但是我遇到了一些问题,我不知道如何解决它们,因为我不熟悉标准的C++线程。
当客户端连接到服务器时,将为该客户端创建一个线程,直到它们被断开连接为止。
clientThread = thread(processMessages);
clientThread.join();
此线程将持续到客户端的生命周期。正如我在这个线程上调用join()一样,当client 2连接而client 1仍然连接时,它会被join()调用阻塞。
删除此join()调用意味着当客户端断开连接时,由于线程可连接而导致终止()错误。
如何使这个客户端线程在后台处理,而主线程可以继续并接受新的连接?
发布于 2018-02-05 12:19:10
只需展示如何存储创建的thread
对象:
std::vector<std::thread> threads;
threads.emplace_back(processMessages);
...
for (auto & t : threads) t.join();
但是,正如其他人在评论中指出的那样,为每个新连接创建一个线程可能不是最好的方法。
https://stackoverflow.com/questions/48630349
复制相似问题