进程、线程、协程、并发与并行、同步与异步

一、进程、线程、协程、并发与并行、同步与异步

1、进程、线程、协程

  • 进程:
    • 应用程序的启动实例,比如运行一个游戏,打开一个软件、跑一个程序…
    • 操作系统分配资源的最小单位,拥有代码文本、被分配的系统资源、独立的虚拟内存地址、堆栈空间
  • 线程:
    • 从属于进程,主抓 CPU 执行代码的过程,它可以被抢占(中断)和临时挂起(睡眠)
    • CPU调度和分配的最小单位,拥有自己的栈空间
  • 协程:
    • 线程的优化,实现多任务的同步,而又不用加锁
    • 不被操作系统内核所管理,而完全是由程序所控制
  • 进程池和线程池:
    • 解决频繁创建进程和线程所造成的资源浪费(和内存池道理一样)
      进程、线程、协程、并发与并行、同步与异步

2、并发与并行

  • 并发:一个 CPU 通过在任务间快速切换(分时交替执行),达到多任务”一起”执行的错觉,实际并不是同时执行
  • 并行:每个任务都有不同 CPU 去执行(同时执行),达到多任务一起执行,实际是真正的同时执行
    进程、线程、协程、并发与并行、同步与异步

3、同步与异步

  • 同步:一个进程在执行某个请求的时候,若该请求需要一段时间才能返回信息,那么这个进程将会 一直等待下去,直到收到返回信息才继续执行下去
  • 异步:进程 不需要一直等下去,而是继续执行下面的操作,不管其他进程的状态,当有消息返回式系统会通知进程进行处理,这样可以提高执行的效率
    进程、线程、协程、并发与并行、同步与异步

二、参考资料

1、并发操作(协程, 线程,进程)的理解及其在 python 中的应用
2、【面试高频问题】线程、进程、协程