多线程与并行知识点记录

1、并行是将问题分解交给不同的CPU内核去处理
2、而多线程是串行,使用时间分片
3、cpu个数:是指物理上,也及硬件上的核心数
4、是逻辑上的,简单理解为逻辑上模拟出的核心数
5、线程数:是同一时刻设备能并行执行的程序个数,线程数=cpu个数 * 核数【如果有超线程,再乘以超线程数】
6、单个cpu线程在同一时刻只能执行单一程序,也就是一个线程
7、 单个线程同时只能在单个cpu线程中执行
8、线程(Thread)是进程中的基本执行单元,是操作系统分配CPU时间的基本单位,一个进程可以包含若干个线程,在进程入口执行的第一个线程被视为这个进程的主线程
9、Parallel类提供了数据和任务的并行性 。Parallel.For和Parallel.Foreach在每次迭代中调用相同的代码,Parallel.Invoke()允许同时调用不同的方法。Parallel.Invoke()方法用于任务并行,而Parallel.Foreach用于数据并行。
为什么可以多线程执行呢?总结起来有下面两方面的原因:
1、CPU运行速度太快,硬件处理速度跟不上,所以操作系统进行分时间片管理。这样,从宏观角度来说是多线程并发的,因为CPU速度太快,察觉不到,看起来是同一时刻执行了不同的操作。但是从微观角度来讲,同一时刻只能有一个线程在处理。
2、目前电脑都是多核多CPU的,一个CPU在同一时刻只能运行一个线程,但是多个CPU在同一时刻就可以运行多个线程。

猜你喜欢

转载自blog.csdn.net/weixin_44007644/article/details/86645830