进程、线程和协程
进程
进程是一个正在运行的可执行文件(exe),它是系统分配资源的最小单位。好像wx、xhs和wb都是不同的进程。它们各自独立,有自己的资源
线程
一个进程里可以有多个线程,线程是系统进行运行调度的最小单位。好像xhs里可以有不同线程:刷新页面、打字聊天、加载图片、推送通知等。这些线程都共享同一个进程的资源(同个xhs的账号),不过它们各自负责不同的任务
协程
一个线程里可以有多个协程。进程和线程都是被操作系统内核控制的,但是协程是完全由程序控制。其实它们就是函数,程序员可以编写程序来决定什么时候“暂停”和“恢复”。因为它们在同个线程,所以协程的运行是串行的,虽然有多个协程但是任何时刻只能有一个协程执行。好像我们聊天的时候,一个时间只能有一个聊天界面,我们可以在等待回复期间回复别人,但是这个行为是串行的。这里的每个聊天界面对应一个协程。协程也是异步的,能保留每次调用之间的状态。好像我们的聊天界面都有历史记录,会保留我问“在吗“的状态,下次调用(打开聊天界面)还能继续交流
所以它们就是进程(线程(协程)))
线程和协程区别
操作系统会根据时间片调度来切换不同线程。但是协程是由用户决定的,用户会在协程(函数)里设定点(yield)暂停和恢复执行任务。这样就可以决定什么时候切换协程