2016-08-26 18 views
1

スレッド内の条件変数や他の同期プリミティブを使用せずに、スレッドグループ全体を一時的に一時停止して再開する方法はありますか?スレッドの中断と再開

pthread_killはプロセス全体に影響するため、スレッドを中断するために使用することはできませんが、Linux/Windows/Darwinでは低レベルのシステムコールがありますか?

異なるスレッドで実行される診断モジュールが必要なためです。マルチスレッドプログラム全体を定期的にフリーズし、他のスレッドの(アトミック)変数を読み出す必要があります。

+0

Windowsでは、Visual Studioのデバッガはすべてブレークできますが、別のプロセスから実行されており、おそらくDebugBreakProcess()を使用しています。私はデバッグされているプロセスからどのように変数を探すのかよく分かりません。 – rcgldr

答えて

1

これはほとんど不可能です。診断モジュールが別のスレッドが保持していたロックを取得しようとすると、プロセスはデッドロックします。また、一般的に、他のスレッドが保持している可能性のあるロックを内部的に取得しようとする操作を知る方法がありません。あなたが解決しようとしている問題が何であれ、それを解決する方法はほぼ確実です。

関連する問題