gpt4 book ai didi

ios - 每秒调度一个定时器调度源是否安全?

转载 作者:行者123 更新时间:2023-11-28 21:32:55 26 4
gpt4 key购买 nike

我使用 GDC 创建了这个计时器。它将每 1 秒调用一个方法。让这个计时器在整个时间内都处于事件状态是否安全,即使在后台也是如此?

self.theTimer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0, dispatch_get_main_queue());
dispatch_source_set_timer(self.theTimer, DISPATCH_TIME_NOW, (1.0) * NSEC_PER_SEC, 0.25 * NSEC_PER_SEC);
dispatch_source_set_event_handler(self.theTimer, ^{
[self awakeAndProcess];
});

// Start the timer
dispatch_resume(self.theTimer);

“awakeAndProcess”方法具有“消费者”行为,它检查数据队列并尝试发送 HTTP 请求。所以它一直在检查是否有消息要发送

最佳答案

您最好在进入后台时暂停计时器以节省电量,因为 awakeAndProcess 似乎是一个网络调用。但是如果你在后台,那么你的所有任务都会被暂停,所以应该不是问题。在前台时,最好等待上一个 awakeAndProcess 调用完成,然后再触发下一个调用。否则,您最终可能会将许多 awakeAndProcess 调用一起批处理。如果 awakeAndProcess 不可重入,那么它可能会对您的代码造成严重破坏。您最好在 awakeAndProcess 之后暂停计时器,然后在 awakeAndProcess 完全完成后调用 resume。

如果您这样做,那么可以安全地使用您的方法。

关于ios - 每秒调度一个定时器调度源是否安全?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159932/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com