前言
继续上一篇文章,主要是说到tcp的问题及其解决方法,进程与线程的概念。问题解决方法主要是用到包头+包体的方式。
进程、线程、协程概念及关系
一个运行的程序是依赖于一个进程的,但是进程的资源消耗比较大,这个时候就需要线程来处理,一个进程可以有多个线程,但是线程有个缺点:运行状态需要切换。运行状态:初始化=》运行开始=》运行中=》阻塞=》销毁。
完成多个任务,我们可以开启多个进程,但是多个进程资源消耗大,这个时候我们就开启多个线程来完成,但是多线程状态需要切换,实际上多线程并不是真正的多个线程并行同时运行,而是以察觉不到的线程切换,来实现多线程的,这个时候就诞生了协程,协程依赖于线程,那多个协程就帮助多个线程完成多个任务,协程是可以利用线程的切换状态的阻塞时间去做一些事情的。
协程特点:切换速度最快的,资源消耗最小的。协程和线程是共存的,线程的生命周期:从线程开启到线程关闭结束,协程和线程都是共存的,线程结束,协程也结束,协程利用下一个线程状态切换的时间去做其他的事。线程状态切换 对于程序来说是慢的,因为线程需要初始化=》变成运行状态=》销毁(这一过程是linux内核处理)。协程:轻量级 ,切换快,协程运行的任务不能是阻塞的。整个过程就是充分利用电脑的资源。