主线程为啥会结束

主线程为什么会结束?
看了篇文章说:pthread_join使一个线程等待另一个线程结束(可以理解),若没有pthread_join主线程会很快结束从而使整个进程结束(这句话理解不了啊,请看代码)。

main()
{
pthread_t tid_produce[10];
Set_concurrency(10);
for(int i=0;i<10;i++)
{
Pthread_create(&tid_produce[i], , , );//////######
}

for(int i=0;i<10;i++)
{
Pthread_join(&tid_produce[i],NULL);///////*****
}

return 0;
}

我的问题就是:为什么需要*****行呢?######行在“return 0”之前,换句话说就那10个子线程结束之后才能顺序执行到“return 0”,那么这里还存在主线程(main函数)先于那10个子线程结束的情况?


------解决方案--------------------
a线程创建b线程之后,两个线程就没有关系了,不管那些b线程是运行1毫秒还是运行1万年,都不会耽误a线程创建b线程之后继续往下走
------解决方案--------------------
引用:
看了篇文章说:pthread_join使一个线程等待另一个线程结束(可以理解),若没有pthread_join主线程会很快结束从而使整个进程结束(这句话理解不了啊,请看代码)。

main()
{
pthread_t tid_produce[10];
Set_concurrency(10);
for(int i=0;i<10;i++)
{
Pthread_create(&tid_produce[i], , , );//////######
}

for(int i=0;i<10;i++)
{
Pthread_join(&tid_produce[i],NULL);///////*****
}

return 0;
}

我的问题就是:为什么需要*****行呢?######行在“return 0”之前,换句话说就那10个子线程结束之后才能顺序执行到“return 0”,那么这里还存在主线程(main函数)先于那10个子线程结束的情况?


主线程,子线程是同时在运行,无法预测哪个线程先结束。只是你站在创建的角度,才有主线程子线程线程之分,在系统的角度只有线程的优先级之分,优先级相同,其地位是相同的