
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
本文围绕一个有界环形队列展开,先用 SPSC 版本说明最基本的生产者消费者模型,再重点分析 MPSC 版本的迭代过程。MPSC 的核心难点不在“多个线程怎么拿到不同位置”,而在“多个生产者完成构造的顺序可能和认领位置的顺序不同”,因此不能把tail_当作可读边界,也不能把commit_简单理解成完成数量,最终必须使用表示连续可读前缀和每个槽位对应的精确票号。

在服务器中,定时器常用于连接超时检测、心跳检测、延迟任务执行等场景如果每次tick都遍历所有定时器,那么定时器数量越多,检查成本越高这样每次只需要检查堆顶定时器如果堆顶还没有到期,那么堆中其他定时器一定也没有到期如果堆顶已经到期,就删除堆顶并执行回调,然后继续检查新的堆顶。

在服务器开发中,定时器经常用于处理连接超时、心跳检测、资源清理、缓存刷新等任务如果使用排序链表管理定时器,每次添加新定时器都要按照过期时间找到插入位置,定时器数量多时插入效率会下降可以把时间轮理解成一个环形数组,数组中的每个位置叫做一个槽,也就是slot每个槽后面挂一条定时器链表,时间轮指针每隔一段时间向后移动一格,这一次移动叫做一次tick。

MOBILE = 0;HOME = 1;WORK = 2;Person:单个联系人AddressBook:电话簿,内部保存多个 PersonPersonname:姓名id:联系人 IDemail:邮箱phones:多个电话号码last_updated:最后更新时间。

普通的redis交互(非pipeline):(1)客户端发送一条命令(2)redis服务器执行命令并返回结果(3)客户端收到结果后发送下一条命令pipeline:允许客户端将多条命令一次性发送给服务器,而不是一条一条,redis会依次执行这些命令并将结果一次性返回:pipeline不具备事务性。








