考虑以下代码段。猜测它会将最多两个数字打印到标准输出是明智的。但在某些运行中,我得到以下结果:
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;
}
答案 0 :(得分:0)
未加入的pthreads的行为未定义。如果在主函数末尾加入pthreads,则不一致性就会消失。