使用 pthread_create 创建线程后主进程结束,创建的线程也会结束,使用 pthread_join 可以阻塞主线程。
#include <pthread.h> #include <stdio.h> #include <Windows.h> #pragma comment(lib, "pthreadVC2.lib") static int count = 0; void* thread_run(void* parm) { for (int i=0;i<5;i++) { count++; printf("The thread_run method count is = %d\n",count); Sleep(1000); } return NULL; } int main() { pthread_t tid; pthread_create(&tid, NULL, thread_run,NULL); // 加入pthread_join后,主线程"main"会一直等待直到tid这个线程执行完毕自己才结束 // 一般项目中需要子线程计算后的值就需要加join方法 pthread_join(tid,NULL); // 如果没有join方法可以看看打印的顺序 printf("The count is = %d\n",count); getchar();//用于阻塞主线程 return 0; }
如果不阻塞,创建的线程无法正常执行