重大社2023《嵌入式linux应用程序设计》教学课件18.pptx

重大社2023《嵌入式linux应用程序设计》教学课件18.pptx

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 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

文档评论(0)

allen734901 + 关注
实名认证
内容提供者

知识共享

认证主体章**

1亿VIP精品文档

相关文档

相关课程推荐