我想用pthread库创建线程。汇编没问题, gcc -o -pthread file file.c运行时错误 - POSIX线程
但是当我运行代码时,出现了段错误。我不确定问题是什么。我试图执行教科书中给出的代码来尝试学习,但现在我迷失了方向。谁能帮忙?代码如下...非常基本,是的,但请把我赶出去。
#include<stdio.h>
#include<pthread.h>
int sum;
void *runner(void *param);
int main (int argc, char *argv[])
{
pthread_t tid;
pthread_attr_t attr;
//printf("Am I here..?\n");
if (argc!=2)
{
fprintf(stderr, "usage: a.out ...\n");
return -1;
}
if (atoi(argv[1] < 0))
{
fprintf(stderr, "%d must be >= 0\n", atoi(argv[1]));
return -1;
}
pthread_attr_init(&attr);
pthread_create(&tid, &attr, runner, argv[1]);
pthread_join(tid, NULL);
printf("sum = %d\n", sum);
}
void *runner(void *param)
{
extern int sum;
int i, upper=atoi(param);
sum=0;
for(i=1; i<= upper; i++)
sum+=i;
pthread_exit(0);
}
这可能是值得学习如何使用调试器。在linux上''gdb'将是选择的工具。在使用'gdb'后,你会在短时间内很轻松地发现这个错误。 – alk
此外,使用选项'-Wall'打开所有警告是一个好主意。在您的特定情况下,编译器将打印的警告将直接指向您的关键代码行。试试吧.. ;-) – alk