pthread的远程功能

时间:2010-05-22 09:45:37

标签: c multithreading pthreads

我在c中编写了一些代码,使用pthread(我先在eclipse IDE中配置了链接器和编译器)。

#include <pthread.h>
#include "starter.h"
#include "UI.h"

Page* MM;
Page* Disk;
PCB* all_pcb_array;

void* display_prompt(void *id){

    printf("Hello111\n");

    return NULL;
}


int main(int argc, char** argv) {
    printf("Hello\n");
    pthread_t *thread = (pthread_t*) malloc (sizeof(pthread_t));
    pthread_create(thread, NULL, display_prompt, NULL);
    printf("Hello\n");
    return 1;
}

工作正常。但是,当我将display_prompt移动到UI.h时 没有打印“Hello11​​1”输出。

任何人都知道如何解决这个问题? ELAD

1 个答案:

答案 0 :(得分:2)

main返回时,所有线程都会终止。如果您创建的主题在那一刻没有打印任何内容,那么它永远不会。这很可能,而不是函数实现的位置。

要让main等到线程完成,请使用pthread_join

int main(int argc, char** argv) {
    printf("Hello\n");
    pthread_t thread;
    pthread_create(&thread, NULL, display_prompt, NULL);
    printf("Hello\n");
    pthread_join(thread);
    return 0;
}

顺便说一下:

  • 不需要malloc;你可以在堆栈上创建thread
  • 如果结果没有错误,您应该从0函数返回main