.NET 多线程
2024-07-11 14:29:03 3 举报
AI智能生成
登录查看完整内容
多线程
作者其他创作
大纲/内容
异步Asynchronou
常见任务
线程是操作系统中能够独立运行的最小单位,也是程序中能够并发执行的一段指令序列
线程是进程的一部分,一个进程可以包含多个线程,这些线程共享进程的资源
进程有入口线程,也可以创建更多的线程
什么是线程?
批量重复任务希望同时进行(比如对于数组中的每个元素都进行相同且耗时的操作)
多个不同任务希望同时进行,互不干扰(比如有多个后台线程需要做轮询等操作)
为什么要多线程?
一组预先创建的线程,可以被重复使用来执行多个任务
避免频繁地创建和销毁线程,从而减少了线程创建和销毁的开销,提高了系统的性能和效率
异步编程默认使用线程池
什么是线程池?
多个线程访问共享资源时,对共享资源的访问不会导致数据不一致或不可预期的结果
线程安全
用于协调和控制多个线程之间执行顺序和互斥访问共享资源
确保线程按照特定的顺序执行,避免竞态条件和数据不一致的问题
同步机制
在执行过程中不会被中断的操作。不可分割,要么完全执行,要么完全不执行,没有中间状态
在多线程环境下,原子操作能够保证数据的一致性和可靠性,避免出现竞态条件和数据竞争的问题
原子操作
什么是线程安全?
线程
线程池
异步编程
Parallel
PLINQ
自带方法
常用实现方式
基本概念
创建Thread实例,传入一个ThreadStart委托
调用Thread.Start() 还可以传递参数
线程的创建
Thread.Join 等待线程结束
只能中断是阻塞状态下的线程
Thread.Interrupt 中断执行的线程
使用Abort方法强制终止线程可能导致一些严重的问题,包括资源泄露等不可预测的行为
较新版本的.NET 中如果使用这个方法,会报PlatformNotSupportedException
更推荐使用Thread.Abort 或者 CancellationToken
Thread.Abort
线程的终止
Thread.Suspend 以及 Thread.Resume
较新版本的.NET 中,这两个方法也被标记是Obsolete
推荐使用锁、信号量等方式实现
线程的挂起与恢复
Thread 线程
InterLocked
lock是Monitor的语法糖,使用lock编译器会自动包装代码
lock & Monitor
Mutex
Semaphore
ManualReserEvent
AutoResetEvent
WaitHandle
ReaderWriterLock
同步机制(锁与信号量)
SemaphoreSlim sem.Wait() sem.Release()
ManualReserEventSlim
AutoResetEventSlim
ReaderWriterLockSlim
轻量型
线程安全与同步机制Thread-Safety
.NET 多线程
0 条评论
回复 删除
下一页