跳至主要內容
什么是异步和同步

什么是异步和同步

我最早听到异步这个东西,是在写js获取api数据的时候,做完那个工作的时候,我知道了异步和同步的区别: 同步: 在一个进程内,有一部分的上下文在执行多个操作,在这里,这些操作必须完成之后才能执行下一步的操作,这种线性执行的模式就叫同步。 异步: 与同步相反,异步就是这部分的上下文中,有一个或多个操作,在执行这些操作时,将该操作建立起来之后就执行下一个操作,那么这个操作就叫异步。 以js为例子:

function asyncFunc(){ 
	setTimeout(logsomething, 3000)
	console.log("这是第二步") 
}
function logsomething(){ 
	console.log("这是第一步") 
}
asyncFunc()

Mr.Lexon大约 2 分钟networkingasynchronous-programmingnetworking
线程和协程

线程和协程

什么是线程

线程是操作操作系统能够进行运算调度的最小单位。线程被包含在进程之中,是进程中的实际运作单位,一个进程内可以包含多个线程,线程是资源调度的最小单位。

什么是协程

因为Web服务和网路服务本身是 IO 密集型服务,处理的任务大多是和网络连接或读写相关的高耗时任务,因为IO本身是异步服务,所以在高并发场景下,大量 IO 等待会导致多线程被频繁挂起和切换,非常消耗系统资源,同时多线程访问共享资源存在竞争问题。如果将其升级为多进程,就会存在频繁调度切换问题以及每个进程资源不共享问题。所以在线程的基础上进一步切分,协程就诞生了,一个线程也可以拥有多个协程,因此协程又称微线程和纤程。


Mr.Lexon大约 2 分钟networkingasynchronous-programmingnetworking