-
Notifications
You must be signed in to change notification settings - Fork 352
mpsc
bobohume edited this page Aug 28, 2025
·
4 revisions
-
actor 模型已消息队列为主
-
golang 通用模型 GMP(groutinue+channel)
-
actor 模型已多生成者但消费者为主
-
试想下一个场景,假如actor用channel,channel内部是有容量的,当容量满了以后,gmp模型会把当前actor所在的g 放到netpoller 线程上去,那投递给这个actor的生产者会被卡住不在执行,一直到actor消费完数据,其他生产者actor才会被继续执行
-
实际生产环境有很多actor其他actor被其中一个actor拖垮,导致系统无法进行下去
- mpsc 可以理解位mailbox,邮箱概念,我投递邮件之后,就不用管之后,后续等接收者拆邮件
- 每个actor各自消息,生成者只管投递msg给指定actor,也不用管我投递是否成功
- 无锁队列
2.mailbox无锁等待
- SwapPointer 代替 CompareAndSwapPointer来解决aba问题