jonnew / Oat

Real-time position tracker for behavioral research
GNU General Public License v3.0
49 stars 19 forks source link

Proper record control thread destruction #19

Open jonnew opened 8 years ago

jonnew commented 8 years ago

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.