message: release thread handles when group is destructed
diff: @@ -33,6 +33,17 @@ public:
  }
  threads.clear();
  }
  +
  + // In the destructor, detach any threads that are still running.
  + // We expect that you've cleaned them up if you want to, probably via join_all()
  + ~thread_group()
  + {
  + for (auto &t : threads)
  + {
  + if (t.joinable())
  + t.detach();
  + }
  + }
  };
  #endif
  