Open cheniujh opened 3 days ago
The changes to the codebase primarily involve renaming variables and clarifying comments in the DispatchThread
and TimerTaskManager
classes. Specifically, the variable timerTaskThread_
has been renamed to timer_task_thread_
, thread names have been adjusted, and the ExecTimerTask
function's return type changed from int
to int32_t
. Additional comments have been included for clarity.
File Path | Change Summary |
---|---|
src/net/src/dispatch_thread.cc |
Renamed timerTaskThread_ to timer_task_thread_ , adjusted thread names. |
src/net/src/dispatch_thread.h |
Renamed TimerTaskThread member variable to timer_task_thread_ . |
src/net/src/net_util.cc |
Changed return type from int to int32_t and modified logic in ExecTimerTask . |
src/net/src/net_util.h |
Changed AddTimerTask return description; removed GetMinIntervalMs ; added comments. |
In the code where threads do dance,
Variables took a chance—
FromtimerTaskThread_
totimer_task_thread_
,
The change was quite good!
With types refined and logic neat,
Now the task timings are quite fleet.
Here's to a code tune-up, a job complete! 🌟🐇
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?
“下一个要执行的定时任务的过期时间戳 - 当前时间戳,直接让epoll等待这个差值即可,没必要找什么mininum time interval,减去这部分逻辑的同时还能降低复杂度” 关键是 epoll wait 的过期时间并不精准呀
Bot detected the issue body's language is not English, translate it automatically.
"The expiration timestamp of the next scheduled task to be executed - the current timestamp, just let epoll wait for the difference. There is no need to find a minimum time interval. Subtracting this part of the logic can also reduce the complexity." The key is The expiration time of epoll wait is not accurate.
epoll_wait timeout 设置为 -1 尤为不合适,咱们这里一个网络 worker 是要处理网络和超时事件,如果只处理网络,那你设定为 -1 还是可以的
Bot detected the issue body's language is not English, translate it automatically.
It is particularly inappropriate to set epoll_wait timeout to -1. We have a network worker here that handles network and timeout events. If it only handles the network, then you can set it to -1.
1 原本的TimerTaskManager正确性没有问题,但是逻辑有改进的空间,具体地:TimerTaskManager::ExecTimerTask()会返回一个timeout, 用于给epoll_wait作为timeout使用,原本返回的这个timeout值是当前定时器内所有任务中执行间隔最小的那个时间间隔的值,但实际上可以直接返回:下一个要执行的定时任务的过期时间戳 - 当前时间戳,直接让epoll等待这个差值即可,没必要找什么mininum time interval,减去这部分逻辑的同时还能降低复杂度
2 加了一些注释,如果将来要增加动态添加/删除定时任务的特性(届时如果有这个需求的话),可以按照注释的思路继续改造
3 规范了一处命名以和pika保持一致:timerTaskThread_改为了 timer_taskthread
1 The correctness of the original TimerTaskManager was not an issue, but there is room for logical improvement. Specifically, TimerTaskManager::ExecTimerTask() returns a timeout that is used as the timeout for epoll_wait. Originally, this returned timeout value was the minimum interval among all tasks in the current timer. However, it can directly return the difference between the expiration timestamp of the next scheduled task and the current timestamp. This difference can be used directly for epoll to wait, without the need to find the minimum time interval.
2 Added some comments. If there is a future requirement to add features for dynamically adding/deleting timer tasks, the modifications can be made following the approach outlined in the comments.
3 Standardized a naming convention to keep it consistent with pika:
timerTaskThread_
was changed totimer_task_thread_
.