- 1、本文档共20页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Posix 多线程编程
Posix线程编程指南(1)
内容:
一、 线程创建
二、线程取消
关于作者
线程创建与取消
杨沙洲(pubb@163.net)
2001 年 10 月
这是一个关于Posix线程编程的专栏。作者在阐明概念的基础上,将向您详细讲述Posix线
程库API。本文是第一篇将向您讲述线程的创建与取消。
一、 线程创建
1.1 线程与进程
相对进程而言,线程是一个更加接近于执行体的概念,它可以与同进程中的其他线程共享数
据,但拥有自己的栈空间,拥有独立的执行序列。在串行程序基础上引入线程和进程是为了
提高程序的并发度,从而提高程序运行效率和响应时间。
线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程正
相反。同时,线程适合于在SMP机器上运行,而进程则可以跨机器迁移。
1.2 创建线程
POSIX通过pthread_create()函数创建线程,API定义如下:
intpthread_create(pthread_t*thread,pthread_attr_t*attr,
void *(*start_routine)(void *), void*arg)
与fork()调用创建一个进程的方法不同,pthread_create()创建的线程并不具备与主线程(即
调用pthread_create()的线程)同样的执行序列,而是使其运行start_routine(arg)函数。thread
返回创建的线程ID,而attr是创建线程时设置的线程属性(见下)。pthread_create()的返回
值表示线程创建是否成功。尽管arg是void *类型的变量,但它同样可以作为任意类型的参
数传给start_routine()函数;同时,start_routine()可以返回一个void*类型的返回值,而这个
返回值也可以是其他类型,并由pthread_join()获取。
1.3 线程创建属性
pthread_create()中的attr参数是一个结构指针,结构中的元素分别对应着新线程的运行属性,
主要包括以下几项:
__detachstate,表示新线程是否与进程中其他线程脱离同步,如果置位则新线程不能用
pthread_join() 来 同 步 , 且 在 退 出 时 自 行 释 放 所 占 用 的 资 源 。 缺 省 为
PTHREAD_CREATE_JOINABLE 状态。这个属性也可以在线程创建并运行以后用
pthread_detach()来设置,而一旦设置为PTHREAD_CREATE_DETACH状态(不论是创建时
设置还是运行时设置)则不能再恢复到PTHREAD_CREATE_JOINABLE状态。
__schedpolicy,表示新线程的调度策略,主要包括 SCHED_OTHER(正常、非实时)、
SCHED_RR(实时、轮转法)和SCHED_FIFO(实时、先入先出)三种,缺省为SCHED_OTHER,
后两种调度策略仅对超级用户有效。运行时可以用过pthread_setschedparam()来改变。
__schedparam,一个structsched_param结构,目前仅有一个sched_priority 整型变量表示线
程的运行优先级。这个参数仅当调度策略为实时(即SCHED_RR或SCHED_FIFO)时才有
效,并可以在运行时通过pthread_setschedparam()函数来改变,缺省为0。
__inheritsched , 有 两 种 值 可 供 选 择 : PTHREAD_EXPLICIT_SCHED 和
PTHREAD_INHERIT_SCHED,前者表示新线程使用显式指定调度策略和调度参数(即attr
中的值),而后者表示继承调用者线程的值。缺省为PTHREAD_EXPLICIT_SCHED。
__scope,表示线程间竞争CPU的范围,也就是说线程优先级的有效范围。POSIX的标准中
定义了两个值:PTHREAD_SCOPE_SYSTEM和PTHREAD_SCOPE_PROCESS,前者表示
与系统中所有线程一起竞争CPU 时间,后者表示仅与同进程中的线程竞争 CPU。目前
LinuxThreads仅实现了PTHREAD_SCOPE_SYSTEM一值。
pthread_attr_t结构中还有一些值,但不使用pthread_create()来设置。
为了设置这些属性,POSIX 定义了一系列属性设置函数,包括 pthread_attr_init()、
pthread_attr_destroy()和与各个属性相关的pthread_attr_get/pthread_attr_s
您可能关注的文档
- Pentair汽车行业应用案例解析-For杭州福特.pdf
- PF-1007反击式破碎机说明书.pdf
- PHILIPS HD883 咖啡机 说明书.pdf
- PHNIX三联供与模块机的应用02.pdf
- PET 脱模剂 INCROMAX100.pdf
- Photoshop制作GIF动态图片教程.pdf
- Photoshop制作逼真的刺绣效果图.pdf
- Photoshop制作逼真建筑照片夜景效果.pdf
- Photoshop打造斑斓的花朵图片.doc
- PhotoShop简单制作点阵字效果.doc
- 第18讲 第17课 西晋的短暂统一和北方各族的内迁.docx
- 第15讲 第14课 沟通中外文明的“丝绸之路”.docx
- 第13课时 中东 欧洲西部.doc
- 第17讲 第16 课三国鼎立.docx
- 第17讲 第16课 三国鼎立 带解析.docx
- 2024_2025年新教材高中历史课时检测9近代西方的法律与教化含解析新人教版选择性必修1.doc
- 2024_2025学年高二数学下学期期末备考试卷文含解析.docx
- 山西版2024高考政治一轮复习第二单元生产劳动与经营第5课时企业与劳动者教案.docx
- 第16讲 第15课 两汉的科技和文化 带解析.docx
- 第13课 宋元时期的科技与中外交通.docx
文档评论(0)