多线程学习(1)--基础概念

线程和进程的区别 线程是cpu调度的基本单位,进程是cpu分配资源的基本单位,一个进程可以有多个线程,线程依附于进程存在。 进程之间相互独立,但一个进程下的线程共享该进程的资源,这些资源对其他进程不可见。

cpu核心数和线程数的关系 给定一个时间点,cpu的核心数>=线程数 使用超线程技术后,一个核心可以同时运行两个线程,所以cpu的核心数>=线程数*2

*cpu时间片 时间片即cpu分配给每个线程的时间(通常为10~100ms数量级),每个线程(时间片是直接分配给线程的,而不是先分配给进程然后由进程分配给线程)被分配一个时间段,称为它的时间片,即该线程允许运行的时间。如果在时间片结束时线程还在运行,那么这个线程的cpu资源将被剥夺并分配给另一个线程。如果线程在时间片结束之前阻塞或者结束,则cpu会立即进行切换,不会造成cpu资源的浪费。

时间片轮转机制(RR调度) 时间片轮转法主要用于分时系统中的进程调度,为了实现轮转调度,系统把所有就绪进程按先入先出的原则排成一个队列,新进来的进程加到就绪末尾。每当执行进程调度时,进程调度程序把队首的进程,给他分配一个时间片,当进程用完分配给它的时间片之后,系统的计时器发出时钟中断,程序调度程序便停止该进程的运行,把它放到队列尾部。 时间片轮转是需要时间的,如果切换一个进程的耗时5ms,而时间片的长度为20ms,那么cpu的损耗将高达5/(5+20)=20%,所以时间片的大小分配是比较讲究的。

并行和并发 并行是在某一时间点是否有多个线(进)程同时运行 并发是在某一时间段是否有多个线(进)程同时运行。 简单来说就是如果只有一台电脑,在某一个时间点只能一个人玩,那么这不是并行,但是在一个小时内有两个人轮流玩,这个叫做并发。 并行是有两个电脑,两个人在同一时间同时在玩。

经验分享 程序员 微信小程序 职场和发展