join()阻止主线程的延续

时间:2014-04-16 00:32:26

标签: c++ multithreading

我希望能够从我的程序中的主线程启动一个新线程。目前我正在使用以下代码:

std::thread acceptThread(Accept);
acceptThread.join();

但是阻止主线程的延续直到acceptThread“完成”。我不想要这个。我只是希望它在不同的线程上运行,以便主线程可以继续。我该怎么做?

我想要的是一个接受传入连接的循环和一个发送/接收数据的循环。这些应该同时运行。

2 个答案:

答案 0 :(得分:3)

join()的整个点是阻塞,直到另一个线程退出。摆脱它。你为什么要首先添加它?

答案 1 :(得分:1)

  

std :: thread acceptThread(Accept);

创建并启动一个新线程,该线程将调用" Accept"方法,这在你的情况下已经足够了。

不需要你的第二行,join会阻止当前线程unil连接的一个退出。

请参阅http://en.cppreference.com/w/cpp/thread/thread/join