Linux-多线程及pthread库API函数理解

POSIX线程(英语:POSIX Threads,常被缩写为Pthreads)是POSIX的线程标准,定义了创建和操纵线程的一套API。原本对pthread的api和多线程存在一些误解,这里记录下来。

几个事实:

-线程的运行需要cpu资源,cpu分配给每个线程的时间片结束后,cpu将交给其他等待运行的线程。

-主线程结束后,由他创建的子线程也会结束

-使用sleep函数意味着挂起当前线程,将cpu交给其他等待运行的线程。

-使用pthread_create()函数创建子线程之后,线程就开始运行了

-pthread_join使得调用该函数的线程挂起等待,直到指定的线程结束,并回收指定线程资源。

-pthread_detach将线程状态设置为分离的(detached)

-分离线程的资源由系统自动释放

-在任何一个时间点上,一个线程是可结合的(joinable)或者可分离的(detached)

-被分离的线程不可被结合

推论:

使用pthread_create()函数创建子线程之后,此时主线程也继续运行。此时主线程和子线程在各自的时间片上交替运行,如果主线程在子线程开始运行前就结束,那么子线程也将直接结束;如果主线程不断运行,则子线程会分配到cpu时间片从而运行。

-如果主线程使用sleep,子线程将会立即得到cpu执行权(多个子线程则根据优先级)

-如果某个子线程使用sleep,主线程或者其他子线程将立刻得到cpu执行权(根据优先级)。

-如果线程调用pthread_join等待自己,将造成死锁。此时函数会直接返回EDEADLK(35)死锁

-线程被创建后,为了释放资源,防止内存泄漏,只能采取主线程或者线程调用pthread_detached,或者主线程调用pthread_join两种方法中的一种。

参考:

https://blog.csdn.net/jiuyueguang/article/details/9350771

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

mrbone11

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值