4

Ubuntu 10.10、Code :: Blocks withGCC4.2を使用しています。

私はそのようなコードを書きました:

#include <iostream>
#include <stdlib.h>
#include <pthread.h>

using namespace std;

void *thread1proc(void* param){
    while(true)
    cout << "1";

    return 0;
}

int main(){
    pthread_t thread1;

    pthread_create(&thread1,NULL,thread1proc,NULL);
    pthread_join(thread1,NULL);

    cout << "hello";
}

メインが起動し、スレッドを作成します。しかし、(私にとって)奇妙なのは、メインが実行を継続しないことです。画面とプログラムの最後に「こんにちは」というメッセージが表示されることを期待しています。Windowsでは、Delphiではそのように機能したからです。「メイン」もスレッドの場合、なぜ実行を継続しないのですか?POSIXスレッドについてですか?

ありがとうございました。

4

2 に答える 2

8

pthread_join完了するまでブロックしますthread1(呼び出しpthread_exitまたは戻る)。これは(無限ループがあるため)決して実行しません。

于 2010-12-06T20:19:17.480 に答える
3

pthread_joinを呼び出し、「to」に参加しているスレッドに無限ループがあるため、停止します。

そのリンクから:

pthread_join()関数は、ターゲットスレッドがすでに終了していない限り、ターゲットスレッドが終了するまで呼び出し元のスレッドの実行を一時停止します。

于 2010-12-06T20:20:07.303 に答える