给大家看一张图。上图是L/F多线程模型的状态转换图。总共有6个关键点:(1)线程有3种状态:leading,processingprocessing,followingfollowing(2)假设一共有N个线程,其中只有1个leading线程(等待任务),x个processing线程(processing),其余有N-1-x个跟随线程(idle)(3)有一把Lock,谁抢到谁领先(4)当一个事件/任务到来时,领先的线程会处理它并转换进入加工状态。处理完成后,变为following(5)following丢失后,following会尝试去抢Lock,抢到就变成leading,否则keepfollowing(6)following什么都不做,只抢锁并尝试成为领先优势:不需要消息队列适用场景:线程可以快速完成工作任务有人说“当并发量大的时候,L/F锁很可能成为系统瓶颈,而一个需要引入消息队列来解决。”这个观点是错误的,一个消息队列,它仍然是一个关键资源,仍然需要锁来保证互斥,但是锁竞争已经从导致到消息队列上,消息队列只能起到消息的作用这个时候缓冲。根本的解决办法是降低锁粒度(比如多队列)。F-L线程模型,可以考虑使用吗?【本文为专栏作者《58神剑》原创稿件,转载请联系原文转载作者】点此阅读该作者更多好文
