thread error.txt
来自「linux下c++编程的好文章」· 文本 代码 · 共 73 行
TXT
73 行
关于linux下多线程编程,小弟遇到了点麻烦,请各位指导一下,谢谢.
这是编译时的错误信息:
[root@localhost thread]# g++ -o mutilthread main.cpp
main.cpp: In function `int main()':
main.cpp:14: error: invalid conversion from `void*' to `void*(*)(void*)'
main.cpp:14: error: initializing argument 3 of `int pthread_create(pthread_t*, const pthread_attr_t*, void*(*)(void*), void*)'
main.cpp:17: error: `exit' undeclared (first use this function)
main.cpp:17: error: (Each undeclared identifier is reported only once for each function it appears in.)
这是源代码:main.cpp
#include <stdio.h>
#include <pthread.h>
void thread(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
}
int main(void)
{
pthread_t id;
int i,ret;
ret=pthread_create(&id,NULL,(void *) thread,NULL);
if(ret!=0){
printf ("Create pthread error!\n");
exit (1);
}
for(i=0;i<3;i++)
printf("This is the main process.\n");
pthread_join(id,NULL);
return (0);
}
1。编码问题
void thread(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
}
改为
void* thread(void)
{
int i;
for(i=0;i<3;i++)
printf("This is a pthread.\n");
return NULL;
}
ret=pthread_create(&id,NULL,(void *) thread,NULL);
改为ret=pthread_create(&id,NULL, thread,NULL);
2。编译问题
g++ -o mutilthread main.cpp
改为
g++ -o mutilthread main.cpp -lpthread
------------
错了一个地方:pthread_create(&id,NULL,(void *) thread,NULL);
把,(void *) thread改成,(void *) &thread
一切ok
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?