Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >redis6.0新特性里面,多线程IO是如何执行命令的?

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

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

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这个函数哪里做了判断?

回答 1

学生

发布于 2020-08-11 08:34:49

您好,上述问题需要您提供更多信息去跟进,建议提交工单为您处理。

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

相似问题

微搭里面,如何 让组件 radiobutton组 水平排列,目前是上下的竖行排列,样式属性里面?

0113

idea里面import io.qameta.allure.Allure;无法导入怎么解决?

081

为什么我的金融服务里面的云支付是404?

0105

nginx双向配置里面的证书是SSL证书嘛?

2452

会议健康度里面是怎么评价出相关的质量的呢?

012
相关问答用户
腾讯 | 高级工程师擅长3个领域
腾讯科技 | 游戏行业解决方案总监擅长2个领域
腾讯 | 高级工程师擅长4个领域
腾讯 | 高级工程师
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档