flare icon indicating copy to clipboard operation
flare copied to clipboard

Timer

Open 4kangjc opened this issue 1 year ago • 6 comments

https://github.com/Tencent/flare/blob/17b70d10f53b61e6af510c31a12bd889ad5ed03d/flare/fiber/timer.cc#L53-L83 没有看懂UserCallback的作用, Run函数完全没有调用啊, running也就显得乏力了

4kangjc avatar Mar 19 '23 08:03 4kangjc

确实写错了,感谢反馈,我处理下。

本意是避免多个fiber同时调用用户的callback,不然容易导致线程安全问题。因为一般除非极端情况下timer运行的特别慢,不然不会导致多个timer同时跑,所以对用户来说大多数情况下在timer里面加锁也没太大意义。

UserCallback的另外一个目的是为了在下面套上shared_ptr,提供CopyConstructible,不然没法多次StartFiberDetached。(不过单纯就这一点来说其实shared_ptr<function>也是一样的)

0x804d8000 avatar Mar 19 '23 11:03 0x804d8000

确实写错了,感谢反馈,我处理下。

本意是避免多个fiber同时调用用户的callback,不然容易导致线程安全问题。因为一般除非极端情况下timer运行的特别慢,不然不会导致多个timer同时跑,所以对用户来说大多数情况下在timer里面加锁也没太大意义。

UserCallback的另外一个目的是为了在下面套上shared_ptr,提供CopyConstructible,不然没法多次StartFiberDetached。(不过单纯就这一点来说其实shared_ptr<function>也是一样的)

是不是要把if换成while, 多个fiber同时调用用户的callback, 就只执行其中的一个吗?

4kangjc avatar Mar 19 '23 12:03 4kangjc

本来的想法是采取一个跟Windows类似的做法,避免因为timer处理不过来导致一直在跑个不停

不过现在想想这个做法可能确实容易给用户一些非预期的结果,而且很难定位到问题出在这里,可能确实while (remining--)更合适些

0x804d8000 avatar Mar 19 '23 14:03 0x804d8000

timer可以把文档补全一下,或者我来也行,我想想怎么写

4kangjc avatar Mar 19 '23 15:03 4kangjc

timer可以把文档补全一下,或者我来也行,我想想怎么写

有时间再写, 不定时:)

4kangjc avatar Mar 27 '23 12:03 4kangjc

README中的[调度组](flare/), 这里文档没有链接上

4kangjc avatar Mar 27 '23 13:03 4kangjc