2016-10-18 10 views

答えて

3

いいえ、「現在」スレッドのみが中断されています。

の機能は、プログラムのメインスレッドで実行され、nanosleep()でサスペンドするとメインスレッドのみがサスペンドされ、ほかのすべてのスレッドは正常に実行され続けます。 nanosleep(2)マニュアルページ

nanosleep()から

はの呼び出しをトリガー* reqをで指定した時間が経過し、少なくともどちらか まで呼び出し元のスレッドの実行、または 信号の配信を一時停止しますハンドラを呼び出す スレッドまたはプロセスを終了します。

UNIXよりも一般的なPOSIXでは、pthread_join()を使って別のスレッドが終了するまでメインスレッドをブロックすることができます。

+0

歴史的なマンページのいくつかは、ここでは「スレッド」ではなく「プロセス」と誤って言っていると思います。これはOPの混乱の原因になるかもしれません。しかし、この答えは完全に正しいです。 –

+0

@ R ..少なくともUNIXやLinuxの世界ではプロセスがスレッドよりも前にあることを思い出すと、すべてのケースでマニュアルページが間違っていたかどうかはわかりません。 – Vality

+0

@Vality: 'nanosleep'関数は、POSIXが既に追加された時点ですでにスレッドを持っていたということで十分に新しくなっています。スレッドを含むIssue 5(SUSv2)に追加されたようです。 –

関連する問題