我有一个小程序,应该启动第二个线程。问题是,当尝试使用 make 制作该程序的可执行文件时。我得到:
engine@ubuntu:~/Desktop/Lecture$ make thread
cc thread.c -o thread
thread.c: In function ‘main’:
thread.c:10:2: error: unknown type name ‘pthread’ .............
这是我的代码:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
void *func(void*);
int main(){
pthread tid;
if (pthread_create(&tid,NULL,fun,NULL)!= 0 ){
printf("error by _ pthread \n");
}
printf ( "thread output1 \n");
sleep(1);
return EXIT_SUCCESS;
}
void *fun(void* data){
printf("thread output2 \n")
}
我不认为该程序有错,也许是我运行 make 命令的方式有错?
知道我为什么会得到这个吗?提前感谢你的帮助
答案1
您忘记链接动态库了吗?
cc 线程.c -o 线程-lpthread
更多错误:
- pthread 的类型是 pthread_t
- 你拼错了 fun 和 func
- printf 后的函数中没有分号
答案2
根据手册页pthread_create
和互联网上的一些示例代码,第一个参数是指向的指针pthread_t
,而不是pthread
。试试:
pthread_t tid;