Linux多线程基础学习(三)线程生命周期

本文介绍了Linux多线程基础知识,包括线程的生命周期:新建、就绪、运行、阻塞和终止状态。当主线程结束时,会导致进程及所有线程结束。线程的分离属性允许在线程终止时立即回收资源,避免成为僵尸线程。分离线程使用pthread_detach函数实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

初始线程/主线程

 

1、当c程序运行时,首先运行main函数。在线程代码中,这个特殊的执行流被称作初始线程或者主线程。你可以在初始线程中做任何普通线程可以做的事情。

2、主线程的特殊性在于,它在main函数返回的时候,会导致进程结束,进程内所有的线程也将会结束。这可不是一个好的现象,你可以在主线程中调用pthread_exit函数,这样进程就会等待所有线程结束时才终止。

3、主线程接受参数的方式是通过argc和argv,而普通的线程只有一个参数void*

4、在绝大多数情况下,主线程在默认堆栈上运行,这个堆栈可以增长到足够的长度。而普通线程的堆栈是受限制的,一旦溢出就会产生错误

 

 

上篇博客中的代码将41行代码注释掉

//sleep(1);


运行结果变为


看上去显得线程没有创建!这是为什么?

根据上面的描述可以解释这个现象。因为原来有sleep函数可以让原来的主线程延迟1s时间结束,但是去掉后,主线程在print自己的ID后就结束了,同时导致程序的进程结束,而此时其他的子线程可能还没有创建完成,或者没有执行到输出自己ID的语句处。因此看上去新线程没有创建。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值