课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
线程问题我们在前几期的文章中已经给大家介绍过很多次了,而本文就再来了解一下,线程分离属性的设置与修改。希望通过对本文的阅读,大家对于线程问题有一个更全面的了解。
一、设置线程的分离属性
在Linux平台默认情况下,虽然各个线程之间是相互独立的,一个线程的终止不会去通知或影响其他的线程。但是已经终止的线程的资源并不会随着线程的终止而得到释放,我们需要调用pthread_join()来获得另一个线程的终止状态并且释放该线程所占的资源。(说明:线程处于joinable状态下)
调用该函数的线程将挂起,等待th所表示的线程的结束。thread_return是指向线程th返回值的指针。需要注意的是th所表示的线程必须是joinable的,即处于非detached(游离)状态;并且只可以有的一个线程对th调用pthread_join()。如果th处于detached状态,那么对th的pthread_join()调用将返回错误。
如果不关心一个线程的结束状态,那么也可以将一个线程设置为detached状态,从而让操作系统在该线程结束时来回收它所占的资源。将一个线程设置为detached状态可以通过两种方式来实现。一种是调用pthread_detach()函数,可以将线程th设置为detached状态。另一种方法是在创建线程时就将它设置为detached状态,先初始化一个线程属性变量,然后将其设置为detached状态,后将它作为参数传入线程创建函数pthread_create(),这样所创建出来的线程就直接处于detached状态。
二、线程属性的修改
互斥锁线程控制
原因:由于线程共享进程的资源和地址空间,因此在对这些资源进行操作时,必须考虑到线程间资源访问的同步与互斥问题
两种线程同步机制:互斥锁和信号量。
这两个同步机制可以通过互相调用对方来实现,但互斥锁更适用于同时可用的资源是的情况;信号量更适用于同时可用的资源为多个的情况。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请在707945861群中学习了解。