我曾经遇到过麻烦pthread_exit()
。我知道没有pthread_exit()
办法像这样使用
pthread_exit(&some_local_variable);
我们总是需要像这样使用 pthread_exit() :
pthread_exit("Thread Exit Message or something necessary information");
我曾经为测试目的编写了一个简单的程序。我分别为两个整数的加法、减法、乘法和除法做了四个线程函数。然后在四个不同的线程上执行这些操作时,我尝试通过pthread_exit()
. 我的意思是这样的:
pthread_exit(&add_result);
当我在 CentOS 6 中运行代码时,我得到了想要的结果(即来自所有线程的垃圾值),因为pthread_exit()
不能这样使用。但是,我糊涂了。因为这是我第一次在 Ubuntu 11.10 中运行该代码,并从三个线程中获得了三个绝对正确的结果(操作的正确结果)和一个线程中的垃圾值。这让我很困惑,因为为什么三个线程给出了正确的操作结果?
此外,我为这些线程使用了不同的睡眠时间。我发现睡眠时间最少的线程给出了垃圾值。
由于 gcc 是这两个操作系统的编译器,为什么一个系统会有这样的错误?它使像我这样的新手程序员感到困惑。如果它不是错误,任何人都可以向我解释为什么会发生这种情况?