2012-03-22 5 views
0

スレッドはいつ終了するのですか?POSIXスレッドに関するトピック

SITUATION:メインプログラム-while

が完了するまで実行するスレッドを待つ必要があります。

- これは、pthread_joinというプロトタイプ関数を使用して行うことができます。

この関数を呼び出すと、スレッド自身がidを持つスレッドの終了を待ちます。

答えて

2

pthread_join(ptherad_t &var)を呼び出した後、メインとなるのは、参加を呼び出したすべてのスレッドが終了するまで待機します。

すべてのスレッドが完了したら、 を呼び出してpthread_exit(NULL)メインを終了します。

タスクの完了後、pthread_exit(NULL)に電話する必要があります。これはスレッドの実行を停止します。しかし、これは必須ではなく、スレッドは単にスレッドが完了したことを意味します。

(スレッド)がpthread_exit(NULL)を呼び出すと、呼び出しスレッドが終了します。

+0

私はそれを知っていました。複雑な回答がある場合は、 –

+0

ありがとうございます。 –

+0

これはあまり正しいことではありません。 "pthread_join()を呼び出した後、メインスレッドはすべてのスレッドが終了するまで待機します。" - pthread_joinには、接続するスレッドを識別するpthread_t引数が必要です。通常は、順番に作成したスレッドごとにpthread_joinを呼び出します。作成されたスレッドはpthread_exitを呼び出す必要はありません。単にpthread_createによって呼び出された関数からの復帰も機能しますが、pthread_exitを使用してpthread_joinに渡す 'void * '値を指定できます。他のオプションもあります。スレッドはexit()でプログラムを終了できますが、それらは常にクリーンアップしません。ファイル&共有memを正しく。 –

関連する問題