线程的基础知识
进程和线程的区别?
从实例去引入我们的进程和线程的概念,说出进程和线程的关系,引出线程,说出两者的内存分配占用,上下文切换的区别
当操作系统把我们磁盘中的程序加载到我们的内存当中,为其分配内存空间,就产生了一个进程,进程可以说是操作系统进行资源分配和管理的基本单位,因为每个进程都有独立的内存空间,所以上下文切换开销较大,而线程可以认为是轻量级别的进程,存在于进程中,与多个线程共享进程内存空间,其中存放的是我们的指令流,上下文切换相较于进程开销更小,只需要切换栈和寄存器等少量信息,线程可以说是操作系统进行任务调度和任务执行的单元
并行和并发有什么区别?
并行就是同一时间,多个任务被同时执行,通常需要多核cpu来实现,每个cpu核心可以独立执行一个或者多个线程。就像我们以边听歌以便写代码
并发就是一段时间内多个任务交替执行,单核cpu也通过时间片轮转机制来实现在不同任务之间切换,在宏观上看着好像他们在同时执行,但是微观上实际上只有一个任务真正占用了cpu资源