は私が持っているコードでハング:私は5秒後に出力でご覧結果タイマーは、私がここで標準環境 とタイマーを実装しようとしているメインスレッド
bool shutdownDetected = false;
void signal_handler(const int sigid)
{
shutdownDetected = true;
}
int main(int argc, const char * argv[])
{
signal(SIGTERM, (sig_t)signal_handler);
std::async(std::launch::async, [&]() {
std::this_thread::sleep_for(std::chrono::milliseconds{5000});
std::cout << "On TIMER!" << std::endl;
});
std::cout << "main function" << std::endl;
while (!shutdownDetected) {
}
return EXIT_SUCCESS;
}
:
// 5 seconds left
On Timer
main function
が、表示させたい:
main function
// 5 seconds left
On Timer
私の実装がメインスレッドもハングアップしているようです。これを避ける方法は?
私は専門家だが、私はそれは奇妙あなたが'に.getを(呼び出してはいけないことを見つける。) 'http://en.cppreference.com/w/cpp /スレッド/未来)。 [もし望むなら、意図した結果が得られます。](http://coliru.stacked-crooked.com/a/f04caae880926851) – Borgleader
実際に 'get'を呼び出す必要はありません。後で 'get'を呼び出すことができるように、' future'を何かに割り当てる必要があります。 – user4581301
@ user4581301一時的に一時的に破壊され、詐欺が起こる前にメインスレッドをハングアップするので、Ohhh? – Borgleader