dispatch_source_set_timer注意事项

void dispatch_source_set_timer(dispatch_source_t source, dispatch_time_t start, uint64_t interval, uint64_t leeway);

此函数用来为timer source设置开始时间、间隔和容许值。

如果需要的话,你可以对同一个timer source对象多次调用本函数,以此来重置它的时间间隔。

参数start决定了timer使用的时钟。如果start time是DISPATCH_TIME_NOW或者以dispatch_time初始化的,则timer使用mach_absolute_time为基础。否则,如果start time是使用dispatch_walltime创建的,则timer使用gettimeofday(3)为基础。

参数leeway是一个微小的时间量,单位是纳秒,系统为了改进性能和介绍耗电,会根据这个时间来推迟timer的执行以与其它系统活动同步。比如,一个程序可能执行一个5分钟为间隔的周期性任务,这个任务有30秒的容许值。要注意,所有timer都需要考虑一些潜在因素,哪怕leeway这个容许值被指定为0。
调用这个函数没有任何效果,如果timer source已经被取消。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容