我正在使用POSIX线程,在程序结束时,我等待加入每个线程。尽管一段时间内运行良好,但在等待线程时代码开始返回奇怪的错误。
pthreads threads[C+P];
for(i = 0; i < (C+P); i++)
{
printf("%d\n", i);
pthread_join(threads[i]);
}
如果我删除printf语句,或者用其他printf语句、延迟或任何其他操作替换它,我仍然会收到一个段错误。我该如何开始调试呢?
我正在使用POSIX线程,在程序结束时,我等待加入每个线程。尽管一段时间内运行良好,但在等待线程时代码开始返回奇怪的错误。
pthreads threads[C+P];
for(i = 0; i < (C+P); i++)
{
printf("%d\n", i);
pthread_join(threads[i]);
}
gdb
获取程序段错误的堆栈跟踪开始。 - Jamey Sharpprintf()
是控制台 I/O,每次调用都会刷新,速度较慢,掩盖了这种情况。 - millimoose