为什么在使用pthreads时打印三次?

时间:2014-05-02 00:46:47

标签: c++ pthreads

考虑以下代码段。猜测它会将最多两个数字打印到标准输出是明智的。但在某些运行中,我得到以下结果:

user@homedesk:test~> ./test
140641008801600
140640992085760
140640992085760

为什么打印出三个数字?

#include <iostream>
#include <pthread.h>


static void* create_thread(void *ptr)
{
    std::cout << " " << pthread_self() << std::endl;
    while(1);

    return NULL;
}

int main()
{
    pthread_t tid;

    pthread_create(&tid, NULL, create_thread, NULL);
    std::cout << pthread_self() << std::endl;

    return 0;
}

1 个答案:

答案 0 :(得分:0)

未加入的pthreads的行为未定义。如果在主函数末尾加入pthreads,则不一致性就会消失。