首页 > 编程语言 >C# 多线程学习笔记

C# 多线程学习笔记

时间:2023-01-05 11:35:13浏览次数:41  
标签:操作系统 C# -------------- 笔记 -- 线程 进程 多线程

 /// 进程:程序在服务器上运行是,占据的计算资源合集,称之为进程;

/// 进程之间不会相互干扰--进程之间的通信比较困难(分布式)
/// 线程:程序执行的最小单位,相应操作的最小执行流
/// 线程也包含自身的计算资源
/// 线程是属于进程的,一个进程可包含多个线程
/// 多线程:一个进程里,有多个线程并发执行;一个进程有多个线程同时运行
/// 句柄:其实就是一个long数字,是操作系统标识应用程序

/// C#

/// 多线程Thread:类,就是一个封装,是.net Framework对线程对象的抽象封装
/// 通过Thread去完成的操作,最终是通过向操作系统请求得到的执行流
/// CurrentThread:当前线程,任何操作执行都是线程完成的,运行当前代码的线程
/// ManagedThreadId:是.net平台给Thread起的名称(就是一个int值,尽量不重复)
///
/// --------------特征1:--------------
/// 同步单线程方法--卡界面--主线程(UI)忙于计算,所以不能即时响应
/// 异步多线程方法--不卡界面--主线程(UI)以加载完成,计算任务由子线程进行,无阻塞,可响应其他操作
/// --------------特征2:--------------
/// 同步单线程方法--慢--因为只有一个线程计算
/// 异步多线程方法--快--因为多个线程并发计算,多线程就是用资源换性能(资源有上限且不是线性增长)
/// ThreadPool--有上限的
/// Thread--是可启动10000个,但PC可能死机--线程并不是越多越好
/// --------------特征3:--------------
/// 多线程--无序性--不可预测性
/// 启动无序:几乎同一时间像操作系统请求线程,也是需要CPU处理的请求
/// 因为线程是操作系统资源,CLR只能去申请,具体是什么顺序,无法掌控
/// 执行时间不确定:同一个线程同一个任务耗时也可能不同--
/// 其实跟操作系统的调度策略有关,CPU分片<计算能力太强,1s分拆1000份,宏观上就变成了并发>
/// 那么任务执行过程就得看运气--线程的优先级可以影响操作系统的调度
/// 单线程--有序执行
/// 注:使用多线程不能使用延时掌控顺序
/// 同步执行--Invoke--同步能保证顺序,UI会出现卡死,无提示,体验差(只有主线程可操作UI)
/// 异步执行--BeginInvoke(不阻塞)

 

标签:操作系统,C#,--------------,笔记,--,线程,进程,多线程
From: https://www.cnblogs.com/YYkun/p/17026760.html

相关文章