2012-02-21 17 views
2
void myThread(void *arg) { 
    printf("Thread ran!\n"); 
    pthread_exit(NULL); 
} 

int main() { 
    int ret; 
    pthread_t mythread; 
    ret=pthread_create(&mythread,NULL,myThread,NULL); 
    if (ret != 0) { 
      printf("Can’t create pthread (%s)\n", strerror(errno)); 
      exit(-1); 
    } 
    return 0; 
} 

答えて

4

メインスレッドで待つ必要があります。を呼び出してからpthread_join()を使用してください。

8

mainはすぐにスレッドが実行する前に返されるため、sleep(1000);return 0;の前に追加しようとすると、おそらく動作することがわかります。

mainをスレッドが終了するまで待つようにしたい場合は、pthread_joinを試してください(しかしスレッドはまったくないかもしれません)。

pthread_join(mythread, 0); 
return 0; 
+1

なぜあなたの最初のアドバイスですか?この場合、悪い習慣です。 – UmNyobe

+1

実際にデモンストレーションするだけです。睡眠は何をしているのかは明らかですが、マルチスレッドを初めて経験した場合にpthread_joinが何をするのかは明らかではありません。 –

+0

ありがとうございますが、このコードのエラーは次のとおりです: 1) 'pthread_create 'への未定義の参照\t 2)make:*** [テスト]エラー1 –

関連する問題