次のことを行う std::thread を開始するプログラムがあります: X をスリープさせ、関数を実行し、終了します。
create std::thread(Xms, &func)
wait Xms
then do func()
end
たとえば、 std::thread にシグナルを送信して、スリープを即座に中断して func を実行してから終了できるかどうか疑問に思っていました。
これを実行するには、シグナルを std::thread::id に送信する必要がありますか?
私のスレッドは、ラムダ関数を使用してこのように起動されます。
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();
}