pthread后main不会继续

时间:2010-12-06 20:16:44

标签: c++ multithreading gcc pthreads codeblocks

我正在使用Ubuntu 10.10,Code :: Blocks with GCC 4.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";
}

主要启动,创建线程。但奇怪(对我来说)主要是不继续运行。我希望在屏幕和程序结束时看到“hello”消息。因为在Windows中,在Delphi中它对我有用。如果“main”也是一个线程,为什么它不继续运行?它是关于POSIX线程的吗?

谢谢。

2 个答案:

答案 0 :(得分:7)

pthread_join将阻止,直到thread1完成(调用pthread_exit或返回),因为它(它有一个无限循环)它永远不会。

答案 1 :(得分:3)

它停止是因为你调用pthread_join而你加入的线程“to”有一个无限循环。

从该链接:

  

pthread_join()函数暂停   直到执行调用线程   目标线程终止,除非   目标线程已经存在   终止。