首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >redis6.0新特性里面,多线程IO是如何执行命令的?

redis6.0新特性里面,多线程IO是如何执行命令的?

提问于 2020-08-10 23:52:36
回答 1关注 0查看 515

redis6.0添加了IO多线程,个人理解的流程如下

1 创建el

2 创建监听socket,设置回调函数为acceptTcpHandler,这个回调函数的处理逻辑为:有连接请求的时候就接收并新建socket加入到el中去,并设置回调函数为connSocketEventHandler(如果是读事件,这个函数最终还是调用readQueryFromClient

3 把创建的监听socket添加到关注的事件中去

4 创建IO多线程,设置线程入口函数为IOThreadMain,如果是读事件每个线程处理自己的任务队列的时候,调用的是readQueryFromClient

5 beforesleep函数把任务分配给各个IO线程,等待各个线程执行完毕,然后自己的也执行完毕

6 在aemain事件循环中,获取当前可读事件个数,逐个去执行回调函数。

我的疑问是:

IO线程也是执行readQueryFromClient函数,主线程调用回调的时候本质也是执行readQueryFromClient,那么redis就会有执行命令的时候线程切换的问题,但是执行命令的时候又好像是只有主线程在执行,如果只有主线程执行的话,readQueryFromClient这个函数哪里做了判断?

回答

和开发者交流更多问题细节吧,去 写回答
相关文章

相似问题

相关问答用户
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档