我有一个程序启动一个 std::thread 执行以下操作:睡眠 X,执行一个函数,终止。
create std::thread(Xms, &func)
wait Xms
then do func()
end
我想知道我是否可以例如向我的 std::thread 发送一个信号,以便立即打破睡眠并执行 func,然后退出。
我是否需要将信号发送到 std::thread::id 才能执行此操作?
我的线程以这种方式启动,带有一个 lambda 函数:
template<typename T, typename U>
void execAfter(T func, U params, const int ms)
{
std::thread thread([=](){
std::this_thread::sleep_for(std::chrono::milliseconds(ms));
func(params);
});
thread.detach();
}