2024年3月21日发(作者:郭俊人)
解道Vert.x线程模型
1. 线程模型概述
Vert.x的线程模型设计的非常巧妙。总的来说,Vert.x中主要有两种线程:Event Loop线程和Worker线程。其中,Event Loop
线程结合了Netty的EventLoop,用于处理事件。每一个EventLoop都与唯一的线程相绑定,这个线程就叫Event Loop线程。Event
Loop线程不能被阻塞,否则事件将无法被处理。
Worker线程用于执行阻塞任务,这样既可以执行阻塞任务而又不阻塞Event Loop线程。
如果像一样只有单个Event Loop的话就不能充分利用多核CPU的性能了。为了充分利用多核CPU的性能,Vert.x中提
供了一组Event Loop线程。每个Event Loop线程都可以处理事件。为了保证线程安全,防止资源争用,Vert.x保证了某一个Handler
总是被同一个Event Loop线程执行,这样不仅可以保证线程安全,而且还可以在底层对锁进行优化提升性能。所以,只要开发者遵
循Vert.x的线程模型,开发者就不需要再担心线程安全的问题,这是非常方便的。
本篇文章将底层的角度来解析Vert.x的线程模型。对应的Vert.x版本为3.3.3。
2. Event Loop线程
首先回顾一下Event Loop线程,它会不断地轮询获取事件,并将获取到的事件分发到对应的事件处理器中进行处理:
2024年3月21日发(作者:郭俊人)
解道Vert.x线程模型
1. 线程模型概述
Vert.x的线程模型设计的非常巧妙。总的来说,Vert.x中主要有两种线程:Event Loop线程和Worker线程。其中,Event Loop
线程结合了Netty的EventLoop,用于处理事件。每一个EventLoop都与唯一的线程相绑定,这个线程就叫Event Loop线程。Event
Loop线程不能被阻塞,否则事件将无法被处理。
Worker线程用于执行阻塞任务,这样既可以执行阻塞任务而又不阻塞Event Loop线程。
如果像一样只有单个Event Loop的话就不能充分利用多核CPU的性能了。为了充分利用多核CPU的性能,Vert.x中提
供了一组Event Loop线程。每个Event Loop线程都可以处理事件。为了保证线程安全,防止资源争用,Vert.x保证了某一个Handler
总是被同一个Event Loop线程执行,这样不仅可以保证线程安全,而且还可以在底层对锁进行优化提升性能。所以,只要开发者遵
循Vert.x的线程模型,开发者就不需要再担心线程安全的问题,这是非常方便的。
本篇文章将底层的角度来解析Vert.x的线程模型。对应的Vert.x版本为3.3.3。
2. Event Loop线程
首先回顾一下Event Loop线程,它会不断地轮询获取事件,并将获取到的事件分发到对应的事件处理器中进行处理: