本文共 605 字,大约阅读时间需要 2 分钟。
今天在使用pthread_create创建线程时,程序一运行就直接死掉了。经过对比,我发现自己在调用pthread_create时传递了NULL作为第一个参数,导致程序崩溃。错误信息显示程序因“Segmentation fault”而终止。根据pthread_create的man pages,第一个参数必须是线程标识符,必须使用-pointer类型,不能传递NULL。
为了修复这个问题,我修改了代码,正确使用了&tid作为第一个参数,并添加了错误检查。编译使用gcc加上-lstdc++和-lpthread。测试后,程序成功运行了。
以下是修复后的代码:
#include#include void *ThreadTest(void *arg) { printf("Enter ThreadTest \r\n");}int main(void) { pthread_t tid; if (pthread_create(&tid, NULL, ThreadTest, NULL) != 0) { printf("Create thread error! \n"); } else { printf("Create thread success! \n"); } getchar(); return 0;}
转载地址:http://xwafk.baihongyu.com/