#include <thread>
#include <chrono>
using namespace std:
void f()
{
// Sleeping for a very long while
while (SOCKET s = accept(listening_socket, ...))
{
// ...
}
}
int main()
{
std::thread t(f);
DoSomething();
t.???(); /* What to place here to wake/terminate thread f? */
}
在Win32下,我可以使用TerminateThread()
殺死一個線程。但我想要的是一個跨平臺的方法來做到這一點。如何正常喚醒或終止睡眠std ::線程?
我應該如何在C++中優雅地做到這一點?
設計多線程應用程序的一個原則是:「永不殺死線程,讓他們自殺。」 – 2013-02-15 01:33:21
爲什麼你想讓它從第一步開始睡很久? – billz 2013-02-15 01:38:12
對'main'有一個引用而不是一個睡眠的條件變量進行定時等待,並且如果條件觸發然後返回。 – ildjarn 2013-02-15 01:39:08