B_02 什么是线程
什么是线程
线程是操作系统抽象出来的概念,是操作系统上的资源,是用来执行任务操作的单位。各大语言操作操作线程,其实是调用操作系统上的接口来控制线程。
多线程的特点
1、多线程无序性(原因:线程的切换是由操作系统的线程调度算法来进行切换的,里边是黑盒,对应用层不可知)
2、多线程不卡主线程;
2、多线程在计算机合理资源范围内可以提升性能(线程并不是越多越好,线程的开辟、销毁都是比较消耗计算机性能的操作,如果线程过多,系统调度切换线程亦会非常消耗资源,会造成提升的性能不如消耗的性能多)
c#中使用多线程
在c#中委托、thread、Task等对象会与线程的一些操作有关
列举一下几点:
1.1、 thread:线程等待,回调,前台线程/后台线程
2.2、 threadpool(提升线程的复用):线程池使用,设置线程池,ManualResetEvent
3.3 、扩展封装thread&threadpool回调/等待
2.1 Task:Waitall WaitAny Delay
2.2 TaskFactory:ContinueWhenAny ContinueWhenAll
2.3 并行运算Parallel.Invoke/For/Foreach
多线程使用存在的一些问题
在多线程访问共享资源时会存在数据的误操作,需要枷锁来进行多线程的同步,避免误操作的产生。
能起到锁的作用的对象有:Lock,mutex(互斥体),信号量(系统层面的)