ireader / media-server

RTSP/RTP/RTMP/FLV/HLS/MPEG-TS/MPEG-PS/MPEG-DASH/MP4/fMP4/MKV/WebM
MIT License
3.11k stars 1.09k forks source link

为什么change: system_clock uint64 -> uint32? #350

Closed nijiancong closed 3 months ago

nijiancong commented 3 months ago

commit: change: system_clock uint64 -> uint32

uint32存储毫秒时间大约是49.7天,之后溢出回滚时可能会导致逻辑判断错误, 服务器长期运行几年甚至几十年不关机,每49.7天都会有个回滚,感觉这可能是个坑

ireader commented 3 months ago

system_clock() 返回单调增长(调整系统时钟不会出现倒退)的时间tick(单位ms),用于计算时间差异,不能用于计算绝对时间。有的嵌入式系统API只能返回32位值,如果继续用64位值会导致计算的diff值错误。

典型用法: uint32_t t1 = system_clock(); // do something uint32_t t2 = system_clock(); int diff = (int)(t2 - t1);

如果某个模块功能需要统计较长时间,可以考虑用system_time函数。