私は何が間違っているのか分かりません。 Iは、シリアルからのコマンドを待機モードで待機開始時に3つのスレッドpsでの脅威スレッド(cで書かれたスレッドプログラムの場合)
[[email protected] /]# ps
1111 root 608 S fw634c_d_cdm_sb
1112 root 608 S fw634c_d_cdm_sb
1113 root 608 S fw634c_d_cdm_sb
を開始スレッドアプリケーションを有しています。 実行してスタンバイモードに戻ると、私はpsの動作をチェックします。 (あまりにもsq.bracketedされ、ファイル名)アプリケーションのzombiefiedインスタンス
1114 root Z [fw634c_d_cdm_sb]
...
...
...
1768 root Z [fw634c_d_cdm_sb]
およそ628それらのがあります。 - 気にしない(彼らは完了した後に自分でリソースを終了し、自由になる)
-for合流可能スレッド
-for取り外し可能なスレッド:
事は、私は、次のよポリシーがあり、 です - pthread_createを実行した後でpthread_joinを実行し、スレッド関数が完了するのを待ちます。このように:
if (pthread_create(&tmp_thrd_id,&attr_joinable,run_function,(void *)&aStruct)!=0){
DEBUG(printf("thread NOT created \n"));
}else{
DEBUG(printf("thread created !\n"));
if (pthread_join(tmp_thrd_id,NULL)!=0){
DEBUG(printf("\nERROR in joining \n"));
}else{
DEBUG(printf("Thread completed\n"));
}
}
私は多くを行うと、起動はちょうどそれが殺されてはならないという理由だけで周りに位置した後にされませんメインでpthread_exit(NULL)を、実行します。
私はおそらくここで重要なことを忘れています。しかし
600スレッド?他の場所で 'pthread_create'を呼び出していますか? – cnicutar
あなたはどのOSですか?あなたが観察した偽のpthreadの動作とpsの出力から判断すると、私はLinuxThreadsでLinux 2.4を推測するつもりですが、これは本当に質問の一部でなければなりません。 –
@cnicutarはいスレッドが作成されます。 – nass