2011-12-02 7 views
0

UNIXでは、スレッドがスリープ機能を呼び出す場合、そのプロセス全体がその時点で何の動作もしないか、スリープ呼び出しスレッドだけがその時間に何の仕事もしませんか?UNIXスレッド - スリープと特定の時間スレッドを動作させる方法について

マルチスレッドプログラムでは、スレッドを一定の時間稼働させたいのですが、これをどのように達成するのですか?

+0

実行中のスレッドのみがスリープ状態になります –

答えて

1

男睡眠は言う:そう

The sleep() function suspends execution of the calling thread until either seconds seconds have elapsed 
or a signal is delivered to the thread and its action is to invoke a signal-catching function or to 
terminate the thread or process. System activity may lengthen the sleep by an indeterminate amount. 

This function is implemented using nanosleep(2) by pausing for seconds seconds or until a signal 
occurs. Consequently, in this implementation, sleeping has no effect on the state of process timers, 
and there is no special handling for SIGALRM. 

"呼び出しスレッドだけ"。

あなたの2番目の質問は、ほとんどがあなたのコントロールを超えており、ほとんどの人がデザインを考え直してOSに任せておかなければなりません。あなたのOSはスレッドの実行を制御します。条件と信号を使用してスレッドの動作を調整することができますある程度まで。通常、スレッドを直接使用するのではなく、より少ないスレッドを使用してタスクを管理するほうが、より簡単に簡単です。たとえそれをタイムアウトしたいとしても、実行時にスレッドに与えられている時間を把握しようとすると、多くの作業があります。

関連する問題