Multi Thread
2020-03-13 18:05:14 0 举报
AI智能生成
.net core c# 多线程
作者其他创作
大纲/内容
线程同步
简单阻塞方法
Join
Sleep
Wait
锁构造
排它锁
lock
lock
ReadWriteLockSlim
mutex
spinLock
非排它锁
maphore
semaphoreSlim
读写锁
信号构造
EventWaitHandler
AutoResetEvent
waitone
set
两个组成双向等待信号
使用场景:生产者消费者
BlockingCollection<T>
ManulResetEvent
性能
CountdownEvent
signal
wait
addcount
reset
RegisterWaitForSingleObject
waitAny waitAll
Monitor的Wait/Pluse方法
CountdownEvent和Barrier类
非阻塞同步构造
Thread.MemoryBarrier
Thread.VolatileRead
Thread.VolatileWrite
volatile
Interlock
使用Wait和Pulse同步
读写锁
Barrier
挂起和恢复
Tips
.NET Framework 中的通用模式:静态成员是线程安全的
递归锁定的级别顺序如下:读锁,可升级锁,写锁
从 .NET 2.0 开始,Suspend和Resume就已经被反对使用了
Abort
ThreadAbortException
ThreadStateException
AbortRequested
静态构造方法在执行中途永远不会被中止
所有的catch / finally块都很重要,不会在中途中止
如果线程正执行非托管的代码时被中止,会继续直到执行到托管代码时
结束应用程序域
子主题
并行编程
基础知识
异常处理
线程中未处理的异常会导致程序退出
前台线程
进程等到线程结束才结束
Tips
线程个数大于CPU数量会频繁切换上下文导致效率低下
Block
Join
Sleep
Thread Scheduler
time slicing 15.625ms
向线程传递数据
lambda/匿名函数
start 参数
后台线程
进程不等待,结束的时候关闭线程
线程池
并行任务库TPL
Task.Factory.StartNew
hreadPool.QueueUserWorkItem
异步委托
BackgroundWorker
多线程的使用
EAP
BackgroundWorker
中止和中断
Abort
ThreadAbortException
Interrupt
ThreadInterruptedException
安全取消
OperationCanceledException
安全取消
CancellationTokenSource
CancellationToken
WaitHandle
Register
延迟初始化
Lazy<T>
LazyInitializer
局部线程存储
ThreadStatic
ThreadLocal<T>
GetData/SetData
定时器
System.Threading.Timer
System.Timers.Timer
System.Windows.Forms.Timer
System.Windows.Threading.DispatcherTimer
非阻塞同步
内存屏障和易失性
Thread.MemoryBarrier
volatile
volatileRead/volatileWrite
Interlocked
收藏
0 条评论
下一页