没有合适的资源?快使用搜索试试~ 我知道了~
首页Posix Pthread API 总结文档
资源详情
资源评论
资源推荐
Posix Pthread API For Linux and Unix
目录
一、 基本线程编程
、 创建缺省线程
、 等待线程终止
!、 分离线程
、 为线程特定数据创建键"
"、 删除线程特定数据键"
#、 设置线程特定数据#
$、 获取线程特定数据#
%、 获取线程标识符#
&、 比较线程 '$
(、 初始化线程$
、 停止实行线程$
、 设置线程的优先级$
!、 获取线程的优先级%
、 向线程发送信号%
"、 访问调用线程的信号掩码%
#、 安全的 )*&
$、 终止线程&
%、 结束&
&、 取消线程&
(、 启用或者禁用取消功能
、 设置取消类型
、 创建取消点
!、 将处理程序推送到栈上
、 从栈中弹出处理程序
1+39
二、 线程属性
、 属性对象
() 初始化属性
( ) 销毁属性 !
(!) 设置分离状态 !
() 获取分离状态 !
(") 设置栈溢出保护区大小 !
(#) 获取栈溢出保护区大小
($) 设置范围
(%) 获取范围 "
(&) 设置线程并行级别 "
(() 获取线程并行级别 "
() 设置调度策略 "
( ) 获取调度策略 #
(!) 设置继承调度策略 #
() 获取继承调度策略 #
(") 设置调度参数 #
(#) 获取调度参数 $
($) 设置栈大小 $
(%) 获取栈大小 $
(&) 关于栈 $
( () 设置栈地址和大小 %
( ) 获取栈和大小 %
三、 用同步对象编程 &
、 互斥锁属性 &
() 初始化互斥锁属性对象 &
( ) 销毁互斥锁属性对象 &
(!) 设置互斥锁的范围 &
() 获取互斥锁的范围 (
(") 设置互斥锁类型属性 (
(#) 获取互斥锁类型属性 (
($) 设置互斥锁属性的协议
(%) 获取互斥锁属性的协议
(&) 设置互斥锁属性的优先级上限
(() 获取互斥锁属性的优先级上限 !
() 设置互斥锁优先级上限 !
( ) 获取互斥锁优先级上限
(!) 设置互斥锁的强健属性
() 获取互斥锁的强健属性 "
、 使用互斥锁 "
() 初始化互斥锁 "
( ) 使互斥锁保持一致 #
(!) 锁定互斥锁 #
() 解除互斥锁 $
2+39
(") 使用非阻塞的互斥锁 %
(#) 销毁互斥锁 %
!、 条件变量属性 %
() 初始化条件变量属性 %
( ) 删除条件变量属性 &
(!) 设置条件变量范围 &
() 获取条件变量范围 &
、 使用条件变量 !(
() 初始化条件变量 !(
( ) 基于条件变量阻塞 !(
(!) 解除阻塞一个线程 !
() 在指定的时间之前阻塞 !
(") 在指定的时间间隔内阻塞 !
(#) 解除阻塞所有线程 !
($) 销毁条件变量状态 !
(%) 唤醒丢失问题 !
(&) 生成方和使用方问题 !!
"、 使用信号进行同步 !!
() 命名信号和未命名信号 !!
( ) 计数信号量概述 !!
(!) 初始化信号 !!
() 增加信号 !
(") 基于信号计数进行阻 !
(#) 减小信号计数 !
($) 销毁信号状态 !
(%) 使用信号时的生成方和使用者问题!
#、 读写锁属性 !"
() 初始化读写锁属性 !"
( ) 销毁读写锁属性 !"
(!) 设置读写锁属性 !"
() 获取读写锁属性 !#
$、 使用读写锁 !#
() 初始化读写锁 !#
( ) 获取读写锁中的读锁 !#
(!) 读取非阻塞读写锁中的锁 !$
() 写入读写锁中的锁 !$
(") 写入非阻塞读写锁中的锁 !%
(#) 解除锁定读写锁 !%
($) 销毁读写锁 !%
(%) 扩进程边界同步 !&
3+39
一、 基本线程编程
、 创建缺省线程
如果未指定属性对象,则该对象为 ,,系统会创建具有:
进程范围
非分离
! 缺省栈和缺省栈大小
零优先级
-./01
02.3024 56. 02724 768434259
38496849:
使用 , 属性参数或缺省属性调用 02.39时,02.39会创建一
个缺省线程。在对 7 进行初始化之后,该线程将获得缺省行为;
返回值:调用成功完成之后返回零。其他任何返回值都表示出现了错误;
;,:超出了系统限制,如创建的线程太多;
,<:7 的值无效
、 等待线程终止
-./01
02302568449:
0239函数会一直阻塞调用线程,直到指定的线程终止;
指定的线程必须位于当前的进程中,而且不得是分离线程;
当 不是 , 时, 指向某个位置,在 0239成功返回时,将该
位置设置为已终止线程的退出状态;
如果多个线程等待同一个线程终止,则所有等待线程将一直等到目标线程终止。
然后,一个等待线程成功返回。其余的等待线程将失败并返回 =>?@ 错误;
在 0239返回之后,应用程序可回收与已终止线程关联的任何数据存储空
间;
返回值:调用成功完成后,0239将返回零。其他任何返回值都表示出现
了错误;
=>?@:没有找到与给定的线程 ' 相对应的线程。
''A:将出现死锁,如一个线程等待其本身,或者线程 和线程 互相等待。
,<:与给定的线程 ' 相对应的线程是分离线程。
0239仅适用于非分离的目标线程。如果没有必要等待特定线程终止之后
才进行其他处理,则应当将该线程分离;
!、 分离线程
-../01
4+39
02.30259:
可回收创建时 . 属性设置为 B@>'2?>B2CD, 的线程的存储空
间;
02.39函数用于指示应用程序在线程 5 终止时回收其存储空间。如果
5 尚未终止,02.39不会终止该线程;
返回值:02.39在调用成功完成之后返回零。其他任何返回值都表示出
现了错误;
,<:5 是分离线程。
=>?@:5 不是当前进程中有效的未分离的线程
、 为线程特定数据创建键
单线程 ? 程序有两类基本数据:局部数据和全局数据。对于多线程 ? 程序,添加
了第三类数据:线程特定数据。线程特定数据与全局数据非常相似,区别在于前者为
线程专有;
线程特定数据基于每线程进行维护。B='(特定于线程的数据)是定义和引用线
程专用数据的唯一方法。每个线程特定数据项都与一个作用于进程内所有线程的键关
联。通过使用 *,线程可以访问基于每线程进行维护的指针3849;
-./01
02*2.302*24*6834.938499:
可以使用 02*2.39分配用于标识进程中线程特定数据的键。键对进程
中的所有线程来说是全局的。创建线程特定数据时,所有线程最初都具有与该键关联
的 , 值;
使用各个键之前,会针对其调用一次 02*2.39。不存在对键(为进程
中所有的线程所共享)的隐含同步;
创建键之后,每个线程都会将一个值绑定到该键。这些值特定于线程并且针对每
个线程单独维护。如果创建该键时指定了 . 函数,则该线程终止时,系统会
解除针对每线程的绑定;
当 02*2.39成功返回时,会将已分配的键存储在 * 指向的位置中。
调用方必须确保对该键的存储和访问进行正确的同步;
使 用 可 选 的 析 构 函 数 . 可 以 释 放 过 时 的 存 储 。 如 果 某 个 键 具 有 非
,. 函数,而线程具有一个与该键关联的非 , 值,则该线程退出时,系
统将使用当前的相关值调用 . 函数。. 函数的调用顺序不确定;
返回值:在成功完成之后返回零。其他任何返回值都表示出现了错误;;,:
* 名称空间已经用完。
,DEE:此进程中虚拟内存不足,无法创建新键
"、 删除线程特定数据键
5+39
剩余38页未读,继续阅读
emacs
- 粉丝: 5
- 资源: 41
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
- MW全能培训汽轮机调节保安系统PPT教学课件.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论9