网站大量收购闲置独家精品文档,联系QQ:2885784924

多线程操作概要.ppt

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

* * * * * * * 大多数计算机上,增加变量操作不是一个原子操作,需要执行下列步骤 将实例变量中的值加载到寄存器中。 增加或减少该值。 在实例变量中存储该值。 * * 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 线程与进程 进程与多任务 进程就是一个在内存中独立运行的程序,有自己的地址空间(如:一个记事本程序) 能同时运行多个进程(程序)的操作系统,称为多任务的操作系统(如:Windows、Linux) 线程与进程 线程 线程:是进程内部单一的一个顺序控制流 线程和进程 每个进程都有独立的代码和数据空间(进程上下文)进程切换的开销大。 线程: 轻量的进程,同一类的线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 多线程: 在同一个进程中有多个顺序流同时执行 线程与进程 线程和进程的比较 共同点 目的都是为了并发 都存在“排斥与同步”的问题 不同点 线程共享内存,而进程是内存隔离的 线程更节省资源 线程又叫“轻进程” 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 线程的创建和启动 C#中创建线程 创建一个ThreadStart委托对象(将要执行的方法托付给该委托对象) 创建类Thread的一个实例,将ThreadStart委托对象通过构造方法传给该Thread对象 启动Thread对象,通过调用Start()方法。 线程的创建和启动 线程的运行 Main()方法 调用的方法 Main()方法 启动新线程 线程的创建和启动 线程的优先级 当线程之间争夺CPU时间时,CPU是按照线程的优先级给予服务的 在C#应用程序中,用户可以设定5个不同的优先级 由高到低分别是Highest,AboveNormal,Normal,BelowNormal,Lowest 在创建线程时如果不指定优先级,那么系统默认为ThreadPriority.Normal myThread.Priority=ThreadPriority.Lowest; 线程的创建和启动 后台线程 所有线程都是依附于Main()函数所在的线程的,Main()函数是C#程序的入口,起始线程可以称之为主线程。 Thread.ThreadState 属性 这个属性代表了线程运行时状态,在不同的情况下有不同的值 Background状态,它指示线程是在后台运行还是在前台运行(默认为False) 如果所有的前台线程都停止了,那么主线程可以终止,而所有的后台线程都将无条件终止。 线程的创建和启动 Thread.CurrentThread属性 获取当前正在运行的线程 Thread类的静态属性 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 线程的生命周期 线程的状态 线程的生命周期 线程的生命周期 就绪 ready 运行 runing 阻塞 blocking start() 死亡 dead Sleep() Join() 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 对线程进行操作 通过睡眠堵塞线程(Sleep) 想把线程挂起一段时间,使用Thread类的静态方法Sleep()。该方法有重载,我们使用传递一个整数类型参数的方法,该整数值表示毫秒数 对线程进行操作 拼接线程(Join) 当暂停一个线程,让其等到另一线程完成之后再继续,可将第一个线程拼接到第二个线程。相当于把第一个的头部连接到第二个的尾部,把它们接起来。 把线程一(t1)拼接到线程二(t2),用以下形式 t2.Join(); 如果上面的语句在t1的一个函数中运行,t1会挂起,直到t2完成并退出 对线程进行操作 终止线程 正常情况:线程的调用方法执行完毕后线程终止。 也可以让线程终止自己 最干净的方法是设置布尔标记(如: KeepAlive),线程间隔地监测这个值,当这个标记改变状态(从真到假,或者从假到真),线程停止自己 调用线程的Interrupt()方法 调用线程的Abort()方法 本课目录 线程与进程 线程的创建和启动 线程的生命周期 对线程进行操作 线程的同步 线程的同步 同步(Synchronization) 多个线程访问同一资源会产生线程安全问题。 在同一时间只有一个线程能够修改或使用一个公共资源,需要使用同步的机制,对公共资源进行加锁。 C#提供了三种同步机制: 互锁类(Interlocked类) C# lock语句,某个线程拿到一个对象的锁,其他对象就不可执行被锁区域的代码,只有在锁被释放后 监控对象(Monitor类),对资源最

文档评论(0)

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

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

1亿VIP精品文档

相关文档