随着对一门编程语言的不断深入,多线程、并行编程和线程安全等字眼不断涌现,如何才能将这些高级技术应用于实际开发中呢?也只有真正了解各种技术的特性和详细的功能后才能对这些技术使用得游刃有余。在没有细致了解的前提条件下,贸然是用一项新技术,可能会给你带来意想不到的麻烦!实际上学习多线程的过程,也就是学习如何解决如下四个问题的过程。
- 1、线程之间数据同步怎么处理
- 2、线程之间如何通信
- 3、PFX与TPL如何使用如何实现非阻塞同步
- 4、归根到底都是要保证线程安全
这套教程将使用五个章节来详细介绍多线程相关的各个知识点,由于使用纯文字的描述,无法传达我想对大家所描述的全部,因此这套教程我配套了对应的视频讲解,希望对大家有所帮助。如下是整套教程的目录,以供大家快速寻找自己所需的章节。
一、线程的基础知识
1、使用场景
2、线程创建
2.1、Thread类
2.2、通过任务并行库(TPL)使用线程池
2.3、直接使用线程池
2.4、异步委托
3、Sleep、Join、Yield
4、前台线程与后台线程
5、线程优先级
6、线程中异常的正确处理方式
7、线程池
7.1、最小线程数
二、线程同步
1、阻塞同步
1.1、Join
1.2、自旋+阻塞
2、锁同步
2.1、lock
2.2、Monitor
2.3、死锁
2.4、锁嵌套
3、信号同步
3.1、SemaphoreSlim
3.2、AutoResetEvent
3.3、ManualResetEventSlim
3.5、CountdownEvent
3.6、等待+线程池
3.7、WaitAny、WaitAll和SignalAndWait
4、非阻塞同步
4.1、Interlocked
三、多线程的使用
1、Interrupt
2、Abort
3、协作取消
4、延迟初始化
5、线程局部存储
四、多线程进阶
1、内存栅栏
1.1、全栅栏
1.2、读写栅栏
2、Wait和Pulse
3、Barrier
4、读写锁
5、自旋锁
5.1、SpinLock
5.2、SpinWait
五、并行编程
1、PLINQ
1.1、并行控制
1.2、分区模式
1.3、保持顺序对性能影响
1.4、输出优化
1.5、Aggregate
2、Parallel
2.1、Invoke
2.2、For
2.3、ForEach
2.4、ParallelLoopState
3、任务
3.1、创建方式
3.2、TaskCreationOptions
3.3、TaskContinuationOptions
3.4、TaskScheduler
3.5、延续
3.6、TaskCompletionSource
4、AggregateException
5、并发集合(线程安全集合)
5.1、IProducerConsumerCollection
5.2、ConCurrentBag
5.3、BlockingCollection
6、async和wait
网友评论