- 如何结束线程
- 无需join、detach已经启动了线程
#include <thread>
#include <iostream>
#include <assert.h>
#include <chrono>
#include <future>
using namespace std;
void threadFunction(std::future<void> futureObj)
{
std::cout << "Thread Statt" << std::endl;
while (futureObj.wait_for(std::chrono::microseconds(1)) == std::future_status::timeout)
{
std::cout << "Doing Some Work" << std::endl;
std::this_thread::sleep_for(chrono::milliseconds(1000));
}
cout << "Thread End" << endl;
}
int main()
{
std::promise<void> exitSignal;
std::future<void> futureObj = exitSignal.get_future();
std::thread th(&threadFunction, std::move(futureObj));
std::this_thread::sleep_for(std::chrono::seconds(20));
cout << "Asking thread to Stop" << endl;
exitSignal.set_value();
while (1)
{
std::this_thread::sleep_for(std::chrono::seconds(20));
}
cout << "Exiting Main Function" << std::endl;
return 0;
}