#include #include #include #include void *thread_main(void *arg); int main(int argc, char *argv[]) { pthread_t t_id; int thread_param = 5; void *thr_ret; // 请求创建一个线程,从 thread_main 调用开始,在单独的执行流中运行。同时传递参数 if (pthread_create(&t_id, NULL, thread_main, (void *)&thread_param) != 0) { puts("pthread_create() error"); return -1; } //main函数将等待 ID 保存在 t_id 变量中的线程终止 if (pthread_join(t_id, &thr_ret) != 0) { puts("pthread_join() error"); return -1; } printf("Thread return message : %s \n", (char *)thr_ret); free(thr_ret); return 0; } void *thread_main(void *arg) //传入的参数是 pthread_create 的第四个 { int i; int cnt = *((int *)arg); char *msg = (char *)malloc(sizeof(char) * 50); strcpy(msg, "Hello,I'am thread~ \n"); for (int i = 0; i < cnt; i++) { sleep(1); puts("running thread"); } return (void *)msg; //返回值是 thread_main 函数中内部动态分配的内存空间地址值 }