【协程】【调度模型】线程池、Actor模式与EventLoop

前言:

  对象是过程的抽象,线程是调度的抽象。谈到调度模型,线程是是操作系统级别的存在,另外还有一种用户态线程:协程

调度:

  的

线程池:

  线程池,属于单个队列,多个线程的调度模型,一般会设置线程核心数core,最大数max,以及限制这个队列的大小;把任务提交到队列中,让线程去获取任务执行;

EventLoop:

  单线程多队列,队列一般放的都是事件而非任务概念,目前了解的JS的线程调度模型,比较适合高并发,但这种时候的所有任务都必须是不阻塞的,不然就会导致效率变慢,最好是语言级别的限制。

混合:

  多线程多队列,可以利用队列机制保证相同事务的事件按顺序消费,而不同事务事件并发执行,例如Netty的线程调度模型

Akka:

  一种Java实现的极致调度模型。

Async/Await:

  语言级别的调度模型,一些语言(如python)中协程的语言表达;等同于JS中的异步IO,但是JS是通过EventLoop实现的

协程:

  如果一个计算机问题想要改进,有两个方式,第一是改变算法过程,第二是改变数据结构,而协程算是改变数据结构,并加以算法改造的提升调度问题的产物。

  • 协程是线程分离调度后的产物,分离调度后的线程只剩下执行流。
  • 线程和协程都有运行状态上下文。

 

posted @ 2021-07-18 01:44  饭小胖  阅读(239)  评论(0编辑  收藏  举报