操作
バグ #3562
完了ExtTrigExecutionContextがRTCをexitしてもスレッドが終了しない
開始日:
2016/04/26
期日:
進捗率:
100%
予定工数:
説明
実行コンテキストにExtTrigExecutionContextをしてした場合に、RTCをexitしても実行コンテキストのスレッドが終了しない問題
原因①
RTCをexitした際にRTObjectのfinalizeContexts関数内でExtTrigExecutionContextのstop関数を呼び出しますが、このstop関数内でself._worker.stop()を呼び出すためworkerの変数_runningがFalseになります。
この時にtick関数を呼び出しても、workerのisRunning関数がTrueを返すときのみしか1ステップ進める処理を実行しないためsvc関数のself._workerthread._cond.wait()で止められたままになります。
原因②
ExtTrigExecutionContextの変数_svcがFalseにならないため、svc関数内のループが終了しません。
原因③
ExtTrigExecutionContextのデストラクタのTask.__del__(self)がNameErrorを出します
操作