多线程函数除了要包含头文件pthread.h外还必须要包含lib库pthread
pthread_create是创建线程,但具体的线程里面做什么事是在void *create(void *arg)里,这个函数名是自己任意区的,但返回值和参数一般都是void*类型,因为pthread_create函数的定义就是这样
int pthread_create(pthread_t*restrict tidp,const pthread_attr_t *restrict_attr,void*(*start_rtn)(void*),void *restrict arg)
你编译的时候有加多线程连接选项吗? 要加上 -lpthread 或者 -pthread (尽量选后者)例如 gcc -pthread -o test main.cpp
另外你的线程创建的不对,函数指针不能强转类型(这里也不用转)
pthread_create(&producter_t,NULL,(void*)producter_f,NULL)
pthread_create(&consumer_t,NULL,(void*)consumer_f,NULL)
应该是
pthread_create(&producter_t,NULL,producter_f,NULL)
pthread_create(&consumer_t,NULL,consumer_f,NULL)
在编译选项中包含mysql的头文件路径,再加上连接库,还有线程的链接库 比如 g++ -o xxx xxx.cpp xxx.cpp -I /usr/include/mysql -l mysqlclient -l pthread欢迎分享,转载请注明来源:内存溢出
评论列表(0条)