C#程序设计 第8章多线程
C# 程序设计 第8章 多线程
本章目标 ■了解线程的基本操作及概念 ■掌握如何创建线程 ■掌握如何暂停和恢复线程的执行 ■掌握如何休眠线程 ■掌握如何终止线程的执行 ■掌握线程同步处理
2 本章目标 ▪ 了解线程的基本操作及概念 ▪ 掌握如何创建线程 ▪ 掌握如何暂停和恢复线程的执行 ▪ 掌握如何休眠线程 ▪ 掌握如何终止线程的执行 ▪ 掌握线程同步处理
多线程编程技术 ★ 进程和线程 创建多线程 3
3 多线程编程技术 进程和线程 创建多线程 ★
引入 同时执行所有任务, 操作系统允许计算机 时间更少,效率更高 三Windows任务管理器 ✉▣x 文件E选项(@)查看帮助(过 应用程序进程性能1 一览无遗 碘像名称 PID CPUCPU时间内存使用 System Idle P. 8 12:0554 6K System 03 0:00:58 28 ex色 160 0:00:00 180 0:00:04 000 0:02 13 0:0008 0:0001 KKK 01 100:00 440 :00:02 0 : 行各项进程 1 00 00 人体 读,写 8 am. exe .0 agntsrve.exe 血液循环 emd.exe c*m 结宋进程但) 程序 (进程) 48 CPU使用:15% 内存使用:728024K/943884K 其他
4 同时执行所有任务, 时间更少,效率更高 人 体 引入 读 ,写 一览无遗 血液循环 在同一时间点执行各项进程 • 编译程序 • 发送/接收邮件 • 打印文件 • 其他 操作系统允许计算机 同时执行多项操作 程序 (进程)
课堂讨论 ■什么是程序?进程?线程? 一程序:存储在存储设备上的数据的有序集合。 一进程:正在执行的不同应用程序的一个实例。 运行一个程序,就是启动了一个进程 一线程:操作系统分配处理器时间的基本单元。 线程称为处理器调度的对象 而进程是资源分配的对象
5 课堂讨论 ▪ 什么是程序?进程?线程? -程序:存储在存储设备上的数据的有序集合。 -进程:正在执行的不同应用程序的一个实例。 -线程:操作系统分配处理器时间的基本单元。 运行一个程序,就是启动了一个进程 线程称为处理器调度的对象 而进程是资源分配的对象
程简介 线程1} 线程2 在C#应用程序中,第一个线程总是Main0方法,因为第 一个线程是由.NET运行库开始执行的,Main0方法 是NET运行库选择的第一个方法。后续的线程由应用程序 在内部启动,即应用程序可以创建和启动新的线程。 尘▣0 一个进程最少包含一个默认线程,即主线程, 还可以包含其他线程,称为辅助线程。 线程3 程序2 6
6 线程简介 程序 1 程序 2 线程 1 线程 2 线程 3 线程 1 线程 2 线程 3 单独的执行路径 在C#应用程序中,第一个线程总是Main()方法,因为第 一个线程是由.NET运行库开始执行的,Main()方法 是.NET运行库选择的第一个方法。后续的线程由应用程序 在内部启动,即应用程序可以创建和启动新的线程。 一个进程最少包含一个默认线程,即主线程, 还可以包含其他线程,称为辅助线程
进程与线程的区别 进程(Process) ■进程就是程序的一次执行活动 ■运行一个程序,就是启动了一个进程 ■ 线程(Thread) ■线程是一个程序内部的一条执行路径或一个控制流 ■线程称为处理器调度的对象,而进程是资源分配 的对象
7 进程与线程的区别 ▪ 进程(Process) ◼ 进程就是程序的一次执行活动 ◼ 运行一个程序,就是启动了一个进程 ▪ 线程 (Thread) ◼ 线程是一个程序内部的一条执行路径或一个控制流 ▪ 线程称为处理器调度的对象,而进程是资源分配 的对象
进程的启动和终止 引入命名空间System.Diagnostics ■启动进程:Proce 静态方法:返回Process.对象 Process.Start(应用程序名称) Process.Start(应用程序名称,文件名) Process.Stat(文件名)l∥已存在的文件路径名 ■终止进程 Process.GetProcessesByName(应用程序名称) p.kill() Process对象 8
8 进程的启动和终止 ▪ 引入命名空间System.Diagnostics ▪ 启动进程:Process.Start() ▪ 终止进程 Process.Start( 应用程序名称 ) 静态方法:返回Process对象 Process.GetProcessesByName( 应用程序名称 ) p.kill( ) Process对象 Process.Start( 应用程序名称,文件名 ) Process.Start( 文件名 ) //已存在的文件路径名
进程的启动和终止 引入命名空间System.Diagnostics 获取当前运行中的进程: Process]pall=Process.GetProcesses(); ■获取当前进程的信息: Process pcurrent=Process.GetCurrentProcess(); 1d:进程号 ProcessName:进程名称 9
9 进程的启动和终止 ▪ 引入命名空间System.Diagnostics ▪ 获取当前运行中的进程: ▪ 获取当前进程的信息: Process[] pall = Process.GetProcesses(); Id:进程号 ProcessName:进程名称 Process pcurrent = Process.GetCurrentProcess();
多线程编程技术 进程和线程 ★ 创建多线程 10
10 多线程编程技术 进程和线程 ★ 创建多线程