hoho,这个线程模型有点意思

Leader-Follower是一种经典的多线程模型。

 

hoho,这个线程模型有点意思
上图就是L/F多线程模型的状态变迁图,这个线程模型有6个关键点。
 
关键点一:线程三种状态。
(1)领导中,leading;
(2)处理中,processing;
(3)追随中,following;
 
关键点二:N个线程状态各异。
(1)只有1个leading线程(等待任务);
(2)有x个processing线程(处理);
(3)有N-1-x个following线程(空闲);
关键点三:有一把锁,谁抢到就是leading。
 
关键点四:事件/任务来到时,leading线程会对其进行处理,从而转化为processing状态,处理完成之后,又转变为following。
 
关键点五:丢失leading后,following会尝试抢锁,抢到则变为leading,否则保持following。
 
关键点六:following不干事,就是抢锁,力图成为leading。
这个线程模型有什么优点?
不需要消息队列。
这个线程模型适用什么场景?
线程能够很快的完成工作任务。
有人说“并发量大时,L/F的锁容易成为系统瓶颈,需要引入一个消息队列解决。”此观点不对,一个消息队列,其仍是临界资源,仍需要一把锁来保证互斥,只是锁竞争从leading移到了消息队列上,此时消息队列仅仅只能起到消息缓冲的作用。
 
根本解决方案是降低锁粒度(例如多个队列)。
F-L线程模型,你有使用过么?

发布者:糖太宗,转载请注明出处:https://www.qztxs.com/archives/science/technology/6624

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022年5月14日 上午12:38
下一篇 2022年5月14日 上午12:39

相关推荐

  • IAST测试靶场搭建

    0x00 前言 测试用例的选择尽量贴近真实业务使用的场景,覆盖常见的高危漏洞,以及各类请求形式。用于测试IAST产品支持检测漏洞类型、检出率、脏数据插入等等   0x01 靶场选择 靶场 DVWA Openrasp-testcases 技术栈 PHP/MYSQL JAVA/PHP/MYSQL 支持漏洞类型 https://github.com/di...

    2022年6月13日
    13300
  • 什么事Spark(轻松学习 Spark)

    今天给大家分享一篇 Spark 核心知识点的梳理,对知识点的讲解秉承着能用图解的就不照本宣科地陈述,力求精简、通俗易懂。希望能为新手的入门学习扫清障碍,从基础概念入手、再到原理深入,由浅入深地轻松掌握 Spark。 1、初识 Spark Spark不仅能够在内存中进行高效运算,还是一个大一统的软件栈,可以适用于各种各样原本需要多种不同的分布式平台的场景。 背...

    2022年5月22日
    7700
  • MySQL事务已提交,数据却丢了(MySQL事务提交,数据丢失)

    有个水友提问: 老师,我们有一次MySQL崩溃,重启后发现有些已经提交的事务对数据的修改丢失了,不是说事务能保证ACID特性么,想问下什么情况下可能导致“事务已经提交,数据却丢失”呢?   这个问题有点复杂,得先从redo log说起。   为什么要有redo log? 事务提交后,必须将事务对数据页的修改刷(fsync)到磁盘上,才能保证事务的ACID特性...

    2022年5月10日
    4100
  • 帖子中心,1亿数据,架构如何设计?

    帖子中心,是互联网业务中,一类典型的“1对多”业务,即:一个用户能发布多个帖子,一个帖子只有一个发布者。   随着数据量的逐步增大,并发量的逐步增大,帖子中心这种“1对多”业务,架构应该如何设计,有哪些因素需要考虑,是本文将要系统性讨论的问题。 什么是x对x? 所谓的“1对1”,“1对多”,“多对多”,来自数据库设计中的“实体-关系”ER模型,用来描述实体之...

    2022年5月14日
    2100
  • mysql-python安装时mysql_config not found

    0x00 描述 mysql-python安装时提示mysql_config not found 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # pip install MySQL-python Collecting MySQL-python Using cached https://files.pythonhosted.org/pack...

    技术 2022年5月27日
    3000

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信