We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
在 Redis 单线程事件循环 中我们提到,Redis 自己实现了一个高性能事件库:aeEventLoop,本次借助 Allenxuxu/gev 的开源实现,希望能明确一个事件库的工作流程,并通过源码分析的方式理解其原理。
Redis
aeEventLoop
The text was updated successfully, but these errors were encountered:
在一个事件驱动的程序中,通常有一个主循环来监听事件,当对应的事件发生时,会调用设定好的回调函数。在前面的 issue 中,我们了解了 Reactor 模型,了解到它的核心是:
Reactor
Reactor线程模型 = Reactor(I/O 多路复用) + 线程池
它有三个角色:Reactor、Acceptor 和 Handler。通常,EventLoop 是和 Reactor配合使用的,EventLoop 的角色通常是:
Acceptor
Handler
EventLoop
I/O多路复用器
TaskQueue 任务队列
I/O
TaskQueue 是多生产者单消费者的任务队列,在多线程并发添加任务时,这种队列可以保证线程安全; I/O 事件 即是往 I/O 多路复用中注册的关心的事件。
TaskQueue
I/O 事件
所以,我们可以说,EventLoop 单线程运行,循环往复执行三个动作:
selector
接下来我们看看具体的实现。
Sorry, something went wrong.
JemmyH
No branches or pull requests
在 Redis 单线程事件循环 中我们提到,
Redis
自己实现了一个高性能事件库:aeEventLoop
,本次借助 Allenxuxu/gev 的开源实现,希望能明确一个事件库的工作流程,并通过源码分析的方式理解其原理。The text was updated successfully, but these errors were encountered: