2017-08-08 21 views
0

プロセスの現在実行中のすべてのスレッドを、停止メッセージを受け取ったときに終了したい。しかし、新しい要求を受け入れるためにプロセスを継続して実行したい。私はC++のstd :: threadを使用していますが、pthreadは使用しません。すべてのスレッドまたは現在実行中のスレッドを終了して、プロセスをC++に維持する

+2

実行中のすべてのスレッドに停止メッセージを転送し、定期的にメッセージをチェックして、見つかった場合に戻します。 – user4581301

+0

プロセスは、起動したn個のスレッドよりも1個多いスレッドを持っています。私はこのスレッドを 'main()'と呼び、終了するまで実行し続けます。 –

+0

おそらくスレッドを殺す(終了させる)ことは望ましくありません。なぜなら、スレッドがロックを保持している可能性があります。彼らは良い点にいるときに終了するようにうまく彼らに尋ねたいと思う。つまり、スレッドは終了する必要があるかどうか定期的にチェックする必要があります。 –

答えて

1

要約:ISO C++ではスレッドを強制終了できません。たとえば、スレッド内のフラグを繰り返しポーリングし、さらに処理を停止します。

通常、std :: threadsはlinuxのpthreadの上に実装されているため、そのAPIを活用することができます。 pthread_cancelをご覧ください。しかし、これはC++のデストラクタをトリガしないので、リソースリークを避けるためにこれを行うときは非常に注意する必要があります。

関連する問題