In oat-record component, destruction of the record control thread requires some custom cleanup. In this case, as per @shlevy in #17
It would probably be better to either a) detach the thread or b) wrap the thread in a class with a destructor that calls cleanup.
Deteaching: downside is that the process won't wait for the thread to finish before exiting, so if there's any cleanup that thread needs to do it's a non-starter.
Having a class with a custom destructor is pretty idiomatic C++ here IMO. Doesn't mean it's the right way to do it, of course, but a big part of the rationale for "terminate on joinable thread destruction" is that it's so easy to get another behavior with your own wrapper.
In
oat-record
component, destruction of the record control thread requires some custom cleanup. In this case, as per @shlevy in #17