- 1、本文档共37页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
POSIX线程程序设计(中文版)
窗体顶端
POSIX 多线程程序设计
Blaise Barney, Lawrence Livermore National Laboratory
目录表
摘要
Pthreads 概述
什么是线程?
什么是Pthreads?
为什么使用Pthreads?
使用线程设计程序
Pthreads API编译多线程程序
线程管理
创建和终止线程
向线程传递参数
连接(Joining)和分离( Detaching)线程
栈管理
其它函数
互斥量(Mutex Variables)
互斥量概述
创建和销毁互斥量
锁定(Locking)和解锁(Unlocking)互斥量
条件变量(Condition Variable)
条件变量概述
创建和销毁条件变量
等待(Waiting)和发送信号(Signaling)
没有覆盖的主题
Pthread 库API参考
参考资料
摘要 在多处理器共享内存的架构中(如:对称多处理系统SMP),线程可以用于实现程序的并行性。历史上硬件销售商实现了各种私有版本的多线程库,使得软件开发者不得不关心它的移植性。对于UNIX系统,IEEE POSIX 1003.1标准定义了一个C语言多线程编程接口。依附于该标准的实现被称为POSIX theads 或 Pthreads。
该教程介绍了Pthreads的概念、动机和设计思想。内容包含了Pthreads API主要的三大类函数:线程管理(Thread Managment)、互斥量(Mutex Variables)和条件变量(Condition Variables)。向刚开始学习Pthreads的程序员提供了演示例程。
适于:刚开始学习使用线程实现并行程序设计;对于C并行程序设计有基本了解。不熟悉并行程序设计的可以参考EC3500: Introduction To Parallel Computing。
Pthreads 概述 什么是线程?
技术上,线程可以定义为:可以被操作系统调度的独立的指令流。但是这是什么意思呢?
对于软件开发者,在主程序中运行的“函数过程”可以很好的描述线程的概念。
进一步,想象下主程序(a.out)包含了许多函数,操作系统可以调度这些函数,使之同时或者(和)独立的执行。这就描述了“多线程”程序。
怎样完成的呢?
在理解线程之前,应先对UNIX进程(process)有所了解。进程被操作系统创建,需要相当多的“额外开销”。进程包含了程序的资源和执行状态信息。如下:
进程ID,进程group ID,用户ID和group ID
环境
工作目录
程序指令
寄存器
栈
堆
文件描述符
信号动作(Signal actions)
共享库
进程间通信工具(如:消息队列,管道,信号量或共享内存)
UNIX PROCESS THREADS WITHIN A UNIX PROCESS 线程使用并存在于进程资源中,还可以被操作系统调用并独立地运行,这主要是因为线程仅仅复制必要的资源以使自己得以存在并执行。
独立的控制流得以实现是因为线程维持着自己的:
堆栈指针
寄存器
调度属性(如:策略或优先级)
待定的和阻塞的信号集合(Set of pending and blocked signals)
线程专用数据(TSD:Thread Specific Data.)
因此,在UNIX环境下线程:
存在于进程,使用进程资源
拥有自己独立的控制流,只要父进程存在并且操作系统支持
只复制必可以使得独立调度的必要资源
可以和其他线程独立(或非独立的)地共享进程资源
当父进程结束时结束,或者相关类似的
是“轻型的”,因为大部分额外开销已经在进程创建时完成了
因为在同一个进程中的线程共享资源:
一个线程对系统资源(如关闭一个文件)的改变对所有其它线程是可以见的
两个同样值的指针指向相同的数据
读写同一个内存位置是可能的,因此需要成员显式地使用同步
Pthreads 概述 什么是 Pthreads?
历史上,硬件销售商实现了私有版本的多线程库。这些实现在本质上各自不同,使得程序员难于开发可移植的应用程序。
为了使用线程所提供的强大优点,需要一个标准的程序接口。对于UNIX系统,IEEE POSIX 1003.1c(1995)标准制订了这一标准接口。依赖于该标准的实现就称为POSIX threads 或者Pthreads。现在多数硬件销售商也提供Pthreads,附加于私有的API。
Pthreads 被定义为一些C语言类型和函数调用,用pthread.h头(包含)文件和线程库实现。这个库可以是其它库的一部分,如libc。
Pthreads 概述 为什么使用 Pthreads?
使用Pthreads的主要动机是提高潜在
您可能关注的文档
- LTE常用参数网管位置截图.docx
- LTE华为后台操作指导书更新20141217.docx
- Mathematica数学实验随机变量的概率分布.doc
- MATLAB与数值分析第二次第三次实验教学及内容.doc
- M2高速钢轧制过程防脱碳研究.docx
- materialsstudio学习整理知识点.doc
- Marine简称常识.docx
- maple作业.doc
- MATALB初步与数字图像处理基础.doc
- Matlab在电磁场与电磁波学习中的应用.docx
- 记忆合金智能鞋带行业可行性分析报告.docx
- 苹果AppleStore的线上线下融合模式探讨.docx
- 苹果AppleStore的定价策略研究.docx
- 苹果AppleStore的个性化服务探索.docx
- 苹果AppleStore零售模式深度解析.docx
- 中国国航:中国国际航空股份有限公司2024年可持续发展暨ESG报告.pdf
- 2024年四季度食品技术公共报表和估值指南.docx
- 2024年四季度医疗技术公共报表和估值指南.docx
- 【Nint任拓】AI做的零食,正在变成某音爆款.docx
- 瑞海科技-机器视觉安全监控平台 -从人工智能视觉服务于变配电室、无人值守、无人巡检开始助力中国配电网革命项目商业计划书.docx
最近下载
- 欧盟碳边境调节机制对钢铁行业的影响及对策建议.docx VIP
- YY0316-2016模版(安全风险分析资料).doc
- 15万吨丙烯酸精制工艺设计.pdf
- 脱蜡知识培训课件.pptx
- 2025年二十届中纪委四次全会党课课件.ppt VIP
- 2024年长期照护师职业技能竞赛理论考试题库(含答案).pdf VIP
- 2025春统编版(2024)小学道德与法治一年级下册(全册)各单元教学计划.docx
- XINJE信捷-XS系列PLCopen标准控制器用户手册【软件篇】(XS Studio)(PS06 20230906 1.2)-2023.9.6.pdf
- 【MOOC】中医与辨证-暨南大学 中国大学慕课MOOC答案.docx
- 阳光书院兴义一中小升初语文英语全真模拟仿真试卷1-8(共8套)附详.pdf VIP
文档评论(0)