>>761ですが、お返事ありがとうございます。

はい、とりあえず thread::detach() を使うようにしました。1つの疑問は、
https://ja.cppreference.com/w/cpp/thread/future/~future によると
> ただし、その共有状態が std::async によって作成され、まだ準備完了になっておらず、これがその共有状態への最後の参照である場合は、ブロックする可能性があります。

ええ何それ、というのが発端でした(後出し失礼)。

確かに、メインスレッドの終了時のこともありますし、スレッドの後始末をちゃんと
した方が本当はいいように思われます。処理が長時間たっても終了しない場合
タイムアウトさせたりとかも。
何かシステマティックな方法等あるでしょうか。参考になるものがあれば...