面试第一次

线程:

线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。线程拥有自己独立的栈和共享的堆,共享堆,不共享栈,线程亦由操作系统调度。使用多线程技术,也可以把进程中负责I/O处理。同一进程中的多个线程有各自的调用栈(call stack),自己的寄存器环境(register context),自己的线程本地存储(thread-local storage)

什么是多线程?多线程是指程序中包含多个执行流,即在一个程序中可以同时运行多个不同的线程来执行不同的任务,也就是说允许单个程序创建多个并行执行的线程来完成各自的任务。多线程的好处:可以提高CPU的利用率。在多线程程序中,一个线程必须等待的时候,CPU可以运行其它的线程而不是等待,这样就大大提高了程序的效率。

# 进程

进程拥有自己独立的堆和栈,既不共享堆,亦不共享栈,进程由操作系统调度。

# 协程和线程的区别

协程:单线程实现并发

协程避免了无意义的调度,由此可以提高性能;但同时协程也失去了线程使用多CPU的能力。

池:类似于一个缓冲地带,保证计算机硬件安全的前提下提高程序的执行效率

多进程:密集cpu任务,需要充分使用多核CPU资源(服务器,大量的并行计算)的时候,用多进程
缺陷:多个进程之间通信成本高,切换开销大

多线程:密集IO任务(网络IO,磁盘I/O,数据库I/O)使用多线程合适。
缺陷:同一个时间切片只能运行一个线程,不能做到高并行,但是可以做到高并发

协程:当程序中存在大量不需要CPU的操作时(IO),适用于协程
缺陷:单线程执⾏,处理密集CPU和本地磁盘IO的时候,性能较低。处理⽹络I/O性能还是⽐较⾼.

原文地址:https://www.cnblogs.com/heruxiu/p/13495479.html