Leader-Follower线程模型简介
2024-08-30 06:21:40
参考58沈剑大神架构师之路上的文章,谈谈Leader-Follower线程模型:
上图就是L/F多线程模型的状态变迁点,共6个关键点:
(1)线程有3种状态:领导leading,处理processing,追随following
(2)假设共N个线程,其中只有1个leading线程(等待任务),x个processing线程(处理),余下有N-1-x个following线程(空闲)
(3)有一把锁,谁抢到就是leading
(4)事件/任务来到时,leading线程会对其进行处理,从而转化为processing状态,处理完成之后,又转变为following
(5)丢失leading后,following会尝试抢锁,抢到则变为leading,否则保持following
(6)following不干事,就是抢锁,力图成为leading
优点:不需要消息队列
适用场景:线程能够很快的完成工作任务
有人说并发量大时,L/F的锁容易成为系统瓶颈,需要引入一个消息队列解决。这种观点不对,一个消息队列,其仍是临界资源,仍需要一把锁来保持互斥,只是锁竞争从leading移到了消息队列上,此时消息队列仅仅只能起到消息缓冲的作用。
根本解决方案是降低锁力度(例如多个队列)
最新文章
- Vim使用
- Objective-c快速入门
- FFT时域与频域的关系,以及采样速率与采样点的影响
- android 入门-Service实时向Activity通过BroadcastReceiver传递数据
- JStorm之Nimbus简介
- 设计模式——";simple Factory";
- ORACLE中创建和删除临时表
- mybatis0212 mybatis逆向工程 (MyBatis Generator)
- MacBook Pro 的照相机在哪?
- Android高效的应用程序开发工具集1---ant构建一个简单的Android工程
- 简单的shared_ptr实现
- 虚幻引擎UE4如何制作可拖动(Drag and Drop)的背包(Scrollbox)
- jdk1.8使用的url和driverName的改变
- Java虚拟机1
- 深入字节码理解invokeSuper无限循环的原因
- JavaScript学习总结(五)——jQuery插件开发与发布
- 浅析arm的异常、中断和arm工作模式的联系
- ORA-10618: Operation not allowed on this segment 执行存储过程权限需声明
- Linux下开发python django程序(django数据库多对多关系)
- jquery 直接访问图片路径