设计线程程序.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
设计线程程序.doc

设计线程程序 并行编程: 在现代多CPU架构中,线程非常适合并行编程,一般来说,能够并行编程的就适合应用并行pthreads编程。 在并行编程时需要考虑很多方面,比如: 需要使用什么样的并行编程模式? 问题分解 负载平衡 通信 数据依赖 同步和竞争 内存问题 I/O问题 程序复杂度 开发者的效率/开销/时间 ... 上面有些主题超出了本指南的范围,然而有兴趣的读者可以从Introduction to Parallel Computing获得相关的信息。 一般来说,为了有效利用Pthreads ,程序一定能够被组织成离散的、独立的、可以同时运行的任务。例如,如果routine1和routine2能够实时的相互交换,交叉和/或者重迭,那么它们就可以考虑成为线程。 具有以下特征的程序可能比较适合成为线程: 能够被多任务同时执行的工作或者同时被多任务操作的数据 可能需要长时间等待的I/O 仅仅一些地方需要许多的CPU循环 必须响应的异步事件 运行中有 Pthreads也可以使用在串行应用中来仿真并行执行。一个完美的例子是web browser:人们在单CPU机器上串行运行它,但是许多事情“看起来“是同时发生的。 线程编程存在几个通用模式: Manager/worker: 一个线程作为manager(管理线程)workers(工作线程)。典型的,管理线程处理所有的输入并把工作分配给其他的线程,在manager/worker中它们至少有以下模式:static worker pool?和 dynamic worker pool Pipeline: 一个任务可以被分为一系列的子操作(suboperations),每一个子操作被不同的线程串行处理,汽车装配线可以形象的描述这种模式。 Peer: 与manager/worker相似,但是当主线程创建了其他线程后,它也变成工作线程。 共享内存模式: 所有线程能够存取同一全局的共享内存 线程也有它们自己的私有数据 开发者负责全局共享数据的同步(保护) 线程安全: Thread-safeness: 指一个应用在没有 clobbering 共享数据或者产生race 条件下同时进行多线程执行的能力。 例如,假设你的应用创建了几个线程,每个线程都会调用同一个库: /修改一个全局结构或一内存。 每一个线程都调用这个库,而且都可能同时修改此库中的这个全局结构或者内存。 对于外部库例程的应用,如果使用的例程不是100%线程安全,问题就可能出现。 建议:当你使用库或者其他没有明确保证线程安全的对象时要慎重。除非能够确定是线程安全的,否则应该假设它们是非线程安全的,对于这种情况,可以利用“串行“调用来实现。 ? The Pthreads API Pthreads API定义在ANSI/IEEE POSIX 1003.1 – 1995标准中,与MPI不同,此标准不能从WEB上免费得到,必须从IEEE那里购买。 对于组成Pthreads API的子例程,可以分为三种主要类型: Thread management线程管理: 第一了类功能就是线程创建,分离,联合等,还包括线程属性的设置/查询。 Mutexes互斥: 第二类功能是处理同步,叫做“mutex “,是mutual exclusion的缩写,互斥功能提供了创建,销毁,加锁和解锁互斥量。也包括补充的修改互斥量属性功能,并用它去设置或者修改与互斥相关的属性。 Condition variables条件变量: 第三类功能阐明了共享互斥量的线程间通信。它们以开发者的特定条件变量为基础。这类功能包括基于特定条件变量的建立,销毁,等待和信号触发,设置/查询条件变量属性的功能也包括在内。 名字规则: 在线程库中的所有标识是以pthread_开头的。 Routine Prefix Functional Group pthread_ Threads themselves and miscellaneous subroutines pthread_attr_ Thread attributes objects pthread_mutex_ Mutexes pthread_mutexattr_ Mutex attributes objects. pthread_cond_ Condition variables pthread_condattr_ Condition attributes objects pthread_key_ Thread-specific data keys The concept of opaque objects pervades the design of

文档评论(0)

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

该用户很懒,什么也没介绍

版权声明书
用户编号:8140007116000003

1亿VIP精品文档

相关文档