我正在尝试编写一个简单的多线程程序。它正在倾倒核心。我有一个在创建线程时调用的函数:
void *BusyWork(void *t)
{
int i;
int *tid;
int result=0;
tid = t;
printf("Thread %d starting...\n",*tid);
for (i=0; i<10; i++)
{
result = result + (i* i);
}
printf("thread %d is sleeping for %d sec's\n",tid,tid);
sleep(tid);
printf("Thread %d done. Result = %e\n",tid, result);
pthread_exit((void*) t);
}
我对 pthread_create 函数的调用位于主函数内部:
int t;
for(t=0; t<NUM_THREADS; t++)
{
printf("Main: creating thread %d\n", t);
rc = pthread_create(&thread[t], &attr, BusyWork, (void *)t);
}
请帮我看看问题出在哪里? 提前致谢。
最佳答案
这一行是错误的:
printf("Thread %d starting...\n",*tid);
您可以通过以下方式实现您想要的:
printf("Thread %d starting...\n",(int) t);
或者 printf("线程 %d 开始...\n", tid);
关于多线程程序中的核心转储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1705900/