- 1、本文档共7页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
《嵌入式Linux应用程序设计》知识点:线程属性
线程属性01调用pthread_create()创建线程,可对新建线程的各种属性进行设置。在Linux系统下,使用pthread_attr_t数据类型定义线程的所有属性。将线程的该值设置为了NULL,也就是说采用了默认属性,线程的多项属性都是可以更改的。线程的常用属性主要有分离属性、堆栈位置和大小、线程调度策略和优先级。其中系统默认的属性为非分离、默认1MB的堆栈大小以及与主线程同样的调度策略和相同的优先级。如果不使用默认值,参数attr必须要指向一个pthread_attr_t对象,而不能使用NULL。当定义pthread_attr_t对象之后,需要使用pthread_attr_init()函数对该对象进行初始化操作,当对象不再使用时,需要使用pthread_attr_destroy()函数将其销毁,函数原型如下所示:#include <pthread.h>int pthread_attr_init(pthread_attr_t *attr);int pthread_attr_destroy(pthread_attr_t *attr);使用这些函数需要包含头文件<pthread.h>,参数attr指向一个pthread_attr_t对象,即需要进行初始化的线程属性对象。在调用成功时返回0,失败将返回一个非0值的错误码。调用pthread_attr_init()函数会将指定的pthread_attr_t对象中定义的各种线程属性初始化为它们各自对应的默认值。同时,Linux为pthread_attr_t对象的各种属性提供了设置属性的接口以及获取属性的接口。
线程属性02线程栈属性:每个线程都有自己的栈空间,pthread_attr_t数据结构中定义了栈的起始地址以及栈大小,调用函数pthread_attr_getstack()可以获取这些信息,函数pthread_attr_setstack()对栈起始地址和栈大小进行设置,其函数原型如下所示:#include <pthread.h>int pthread_attr_setstack(pthread_attr_t *attr, void *stackaddr, size_t stacksize);int pthread_attr_getstack(const pthread_attr_t *attr, void **stackaddr , size_t *stacksize);函数pthread_attr_getstack(),参数和返回值含义如下:attr:参数attr指向线程属性对象。stackaddr:调用pthread_attr_getstack()可获取栈起始地址,并将起始地址信息保存在*stackaddr中;stacksize:调用pthread_attr_getstack()可获取栈大小,并将栈大小信息保存在参数stacksize所指向的内存中;返回值:成功返回0,失败将返回一个非0值的错误码。函数pthread_attr_setstack(),参数和返回值含义如下:attr:参数attr指向线程属性对象。stackaddr:设置栈起始地址为指定值。stacksize:设置栈大小为指定值。返回值:成功返回0,失败将返回一个非0值的错误码。
线程属性03如果想单独获取或设置栈大小、栈起始地址,可以使用下面这下函数:#include <pthread.h>int pthread_attr_setstacksize(pthread_attr_t *attr, size_t stacksize);int pthread_attr_getstacksize(const pthread_attr_t *attr, size_t *stacksize);int pthread_attr_setstackaddr(pthread_attr_t *attr, void *stackaddr);int pthread_attr_getstackaddr(const pthread_attr_t *attr, void **stackaddr);
线程属性04线程分离属性:分离属性是用来决定一个线程何时释放自己的资源。在非分离情况下,当一个线程结束时,它所占用的系统资源并没有被释放,也就是没有真正的终止。只有当pthread_join()函数返回时,线程才能释放自己占用的系统资源。而在分离情况下,一个线程结束时将立即释放它所占有的系统资源。如果在创建线程时就确定要将该线程分离,可以修改pthread_attr_t结构中的detachstate线程属性,让线程一开始运行就处于分离状态。调用函数pthread_attr_setdetachsta
您可能关注的文档
- 重大社2023直播带货教学课件26.pptx
- 重大社2023直播带货教学课件25.pptx
- 重大社2023直播带货教学课件24.pptx
- 重大社2023直播带货教学课件23.pptx
- 重大社2023直播带货教学课件22.pptx
- 重大社2023直播带货教学课件21.pptx
- 重大社2023直播带货教学课件20.pptx
- 重大社2023直播带货教学课件19.pptx
- 重大社2023直播带货教学课件18.pptx
- 重大社2023直播带货教学课件17.pptx
- 四川省成都市石室联合中学2022年高三化学下学期期末试卷含解析.docx
- 2021-2022学年安徽省黄山市岔口镇中学高三化学联考试卷含解析.docx
- 2022-2023学年广西壮族自治区柳州市鹿寨中学高三生物联考试卷含解析.docx
- 福建省龙岩市连城县第三中学2021-2022学年高三数学理月考试题含解析.docx
- 山西省太原市师范学院实验中学2021-2022学年高一化学月考试卷含解析.docx
- (部编版)语文五年级上册寒假课外阅读“天天练”30篇.doc
- 年学校卫生健康教育工作计划.doc
- 教育技术培训小结篇.doc
- 广东省河源市安坳中学高二数学理下学期期末试题含解析.docx
- 2021-2022学年河北省张家口市万泉寺乡中学高二化学下学期期末试题含解析.docx
文档评论(0)