7

以下のようにいくつかのコードを読みました:

void
mcachefs_file_start_thread()
{
  pthread_attr_t attrs;
  pthread_attr_init(&attrs);
  pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_JOINABLE);
  pthread_create(&mcachefs_file_threadid, &attrs, mcachefs_file_thread, NULL);
}

ここで、設定attrsasの使用法は何PTHREAD_CREATE_JOINABLEですか? それに、で作ったスレッドのデフォルト属性じゃないのpthead_create

4

2 に答える 2

13

はい、PTHREAD_CREATE_JOINABLEデフォルトの属性です。目的は、スレッドが終了するまで待機する関数であるスレッドで呼び出すことができるようにすることでpthread_joinあり、メインルーチンの場合は戻り値を返します。

場合によっては、バックグラウンド作業を行うスレッドを作成しているときに、結果を使用したり別の作業に移ったりする前にスレッドが終了していることを確認することをお勧めします。それが、結合可能なスレッドの目的です。

于 2012-08-04T07:44:07.010 に答える
3

posix 仕様によると、新しく初期化されたスレッド属性オブジェクトのデタッチ状態属性のデフォルト設定は、実際には PTHREAD_CREATE_JOINABLE です。たとえば、 http: //linux.die.net/man/3/pthread_attr_setdetachstateを参照してください 。そのとおりです。コードの pthread_attr_setdetachstate 行は、コード スニペットでは必要ありません。

于 2012-08-04T07:43:41.900 に答える