linux里面线程编译运行问题

linux里面线程编译运行问题,第1张

gcc xxx.c -lpthread 其中的-l是指包含的lib库,具体写法可以man gcc看下

线程函数除了要包含头文件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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7636582.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存