为什么要引入线程.ppt

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

Threads 线程 为什么要引入线程 WEB服务器 同时处理多个客户请求 创建多个进程降低响应时间 进程开销较大(上下文切换) 线程(轻量级进程) 是CPU调度的一个基本单位 单线程与多线程 Benefits Responsiveness 可以获得快速的用户响应,如在C/S模式下,web server为每个用户连接运行一个线程;RPC服务器中,RPC服务进程会开启多个线程服务于每个RPC request Resource Sharing 进程是拥有资源的基本单位(CPU,地址空间,I/O资源),进程中的线程可以共享这些资源 Economy 创建线程比创建进程更快,进程内的线程切换(context switch)比进程更快,solaris中创建线程比进程快30倍,线程切换比进程切换快5倍 Utilization of SMP Architectures 可以充分利用多处理器体系结构,使得一个进程中的线程在不同的处理器上运行,提高进程执行的并行度 WEB server/Http request FlashGet / eMule /BT 多线程实例 Application benefits of threads 共享资源产生的不一致问题 3 个变量: A, B, C 由 T1和T2两个线程共享 T1 计算 C = A+B T2 从 A 转X至 B(转帐) T2 : A = A -X and B = B+X (so that A+B is unchanged) If T1 computes A+B after T2 has done A = A-X but before B = B+X, then T1 will not obtain the correct result for C = A + B Threads States(线程状态) User Level Threads(ULT) 内核不关注线程的存在 所有的线程管理由应用程序通过调用ULT库实现 线程间的切换无需内核模式下的特权指令(无模式转换) 线程调度由特定的应用 程序完成 例子 - POSIX Pthreads - Mach C-threads 一种UNIX的操作系统,采用微内核 - Solaris threads User Level Threads library 用户级线程库 Contains codes for: (包含以下代码) creating and destroying threads(线程的创建和撤消) passing messages and data between threads 线程间数据和消息的传递 scheduling thread execution 对线程的调度 saving and restoring thread contexts 对线程上下文的保存和恢复 用户级线程的优缺点 Kernel Level Threads(KLT) 内核级的线程 内核完成对所有线程的管理 无线程库,但内核供内核线程的编程接口(API) 内核需要维护进程和线程的上下文信息 线程间的调度由内核完成 调度的基本单位是线程 例子 - Windows 95/98/NT/2000 - Solaris - Tru64 UNIX - BeOS 内核级的线程 Multithreading Models 多线程模式 Many-to-One (多对一) One-to-One (一对一) Many-to-Many (多对多) Many-to-One Many user-level threads mapped to single kernel thread.(纯用户级线程) Used on systems that do not support kernel threads.(常用 于不支持内核线程的 系统中) One-to-One Each user-level thread maps to kernel thread. (纯核心级线程) Examples Windows 95/98/NT/2000 OS/2 Many-to-Many Model 混合式线程 Allows many user level threads to be mapped to many kernel threads. Takes advantage of many-to-one and one-to-one models Allows the operating system to create a sufficient(充足的) number of kernel threads. 例子 Solaris 2 Windows NT/2000 with th

文档评论(0)

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

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

1亿VIP精品文档

相关文档