我在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时 没有打印“Hello111”输出。
任何人都知道如何解决这个问题? ELAD
答案 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
。