08/02/20 19:33:15
自分から終了することもあるし、外部から終了通知を受け取ることもある
ようなスレッド関数について質問です。
こういう場合、(スレッド関数はすでに終了してるぞ!)フラグや
(外部から終了通知が出されたぞ!)的な何かはいったいどうやって実装していますか?
自分はいつも
bool isActive = false;
bool IsThreadActive() { lock {return isActive} }
void SetThreadActive(bool flag) { lock {isActive = flag; } }
void ThreadFunc() {
SetThreadActive(true);
try {
while (IsThreadActive()) {
... いろんな処理
}
} catch(...) {
SetThreadActive(false);
throw;
}
}
的なやり方でやってしまっているのですが、
これって正しいのでしょうか?
また、もしあればもっといい方法を教えていただけると助かります。