ct14并发思与多线程.pptVIP

  1. 1、本文档共13页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
ct14并发思与多线程

Lu Chaojun, SJTU Lu Chaojun, SJTU 并发与多线程 Lu Chaojun, SJTU * Lu Chaojun, SJTU * * 程序的执行 von Neumann体系结构:程序(指令序列)和数据都存储在内存中 CPU根据程序计数器PC(或称指令指针IP)的内容, 取出当前指令执行,然后PC被赋予下一条要执行的指令的地址. 虽然也存在指令级并行技术,但我们讨论的是程序级的并行. Lu Chaojun, SJTU * Lu Chaojun, SJTU * * 顺序(或串行)执行 CPU执行一个程序时总是从该程序的第一条指令开始,不间断地一直到执行到最后一条指令. 只有一个程序结束,才会去执行下一个程序. CPU每次由一个程序独占.只要前一个程序还没有结束,下一个程序就不能使用CPU. 缺点:系统资源的利用率不高. 计算机系统中有许多资源.当一个程序在使用某个资源时,其他资源是空闲的.如果允许其他程序使用空闲资源,就能提高系统资源的利用率. 例如,DMA Lu Chaojun, SJTU * Lu Chaojun, SJTU * * 并发执行 计算机程序的执行是由操作系统控制的.现代操作系统都支持所谓多道程序或多任务,即允许多个程序同时执行. 同时:在只有一个CPU的情况下,是不可能有真正的多个程序同时运行的,因为CPU在任一时刻只能执行一条指令! 分时使用CPU,即CPU在多个程序之间切换. 这种多个相互独立的程序交叉执行的方式称为并发或并行执行. 多处理器/多核处理器上能真正并行. 进程 进程,是指程序的一次执行而形成的实体.程序一旦执行,即创建一个进程. 进程的构成:程序代码+进程状态信息(上下文,包括程序数据的当前值,当前执行点等)等. 程序与进程:不同程序的执行对应不同的进程;同一个程序多次执行也创建多个进程(相同程序代码+不同上下文). OS调度进程:上下文切换代价高. Lu Chaojun, SJTU * 线程 线程,是指程序(进程)中的一段代码,它构成程序中一个相对独立的执行流. 字面意义:线程是程序内部的一个线索” 线程是一个程序内部的多任务机制. 一个程序中可以有多个执行线索. 线程是OS调度的最小单位. 切换代价小. Lu Chaojun, SJTU * 进程 vs 线程 多个进程一般是相互独立的,而多线程是同一进程的一个多个执行流; 进程带有独立的状态信息,而一个进程内的多个线程则共享状态,内存和其他资源 进程有独立的地址空间,而同一进程的多个线程共享地址空间 进程间通信(IPC)较麻烦,而线程之间可通过共享内存容易地通信 Lu Chaojun, SJTU * 多线程编程 线程原是OS中的概念,是系统的工具,用于系统的功能 线程现在已成为用户程序设计的工具 应用在需要并行执行的场合: 科学应用:更快地计算; 解决阻塞:用户输入;在长时间计算期间进行显示服务;多媒体,动画等. Lu Chaojun, SJTU * Python多线程编程(1) 利用thread模块: import thread 线程的创建和启动: thread.start_new_thread (function, args) 创建一个新线程并立即返回;新线程启动,向函数function传递参量元组args. 线程执行的代码:即function 线程终止:当函数function返回. 例:thread_1.py, thread_2.py Lu Chaojun, SJTU * Python多线程编程(2) threading模块: import threading 提供Thread类来支持线程化程序设计. 创建线程对象后,通过调用它的start()方法来启动线程; start()在一个独立的控制流中调用run()方法. 有两种方法指定线程的活动: 向Thread类的构造器传递一个可调用对象 在Thread类的新子类中重定义run()方法. Lu Chaojun, SJTU * Python多线程编程(3) 创建线程,并向Thread类的构造器传递线程任务代码 t = Thread(target=func,args=(...)) 然后启动线程 t.start() 例:threading_1.py Lu Chaojun, SJTU * Python多线程编程(4) 定义Thread的子类并重定义run() class myThread(threading.Thread): def __init__(self, threadName, delay): threading.Thread.__init__(self) ......

文档评论(0)

180****9566 + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档