当前位置: 首页 > news >正文

关于DispatchTime和DispatchWallTime

先看以下代码,正常来说执行效果是一样的,都是程序执行3后触发回调 

// 使用 DispatchTime.now() 或 .now()
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 3) {
    print("This runs after 3 seconds from the current time")
}

// 使用 DispatchWallTime.now()
DispatchQueue.main.asyncAfter(wallDeadline: DispatchWallTime.now() + 3) {
    print("This runs after 3 seconds from the current wall time")
}

实际效果比较:

  1. DispatchTime.now() + 3.now() + 3:都是计算相对延迟,使用当前时间作为基准,计算出程序执行时的未来时间。此时二者的效果是完全相同的。延迟 3 秒,程序都会在当前时刻之后的 3 秒执行任务。

  2. DispatchWallTime.now() + 3:这也会计算出从当前系统时间开始的一个延迟任务,但它使用的是基于墙钟时间(例如考虑到手动修改系统时间或夏令时变化等)的方式。

简单说,DispatchWallTime会计算出一个具体的时间点,只有系统时钟到了那个点才会执行。比如程序执行后,我把系统时间给改了,那他就不是3s后执行,而是需要加上时间变化的差值

所以,详细大多时候我们还是希望使用DispatchTime,而不是DispatchWallTime

http://www.dtcms.com/a/20131.html

相关文章:

  • SQL sever数据导入导出实验
  • 【kafka系列】消费者
  • ubuntu /dev/ttyUSB1重命名为/dev/ttyUSB0。
  • CentOS 7.8 安装MongoDB 7教程
  • 【ROS2综合案例】乌龟跟随
  • 【信息学奥赛一本通 C++题解】1281:最长上升子序列
  • 反转链表2(92)
  • ThreadLocalRandom原理剖析
  • Spring Cloud — 深入了解Eureka、Ribbon及Feign
  • 2.【线性代数】——矩阵消元
  • C++:高度平衡二叉搜索树(AVLTree) [数据结构]
  • 【Cocos TypeScript 零基础 15.1】
  • 如何在Spring Boot中配置分布式配置中心
  • 2025-02-13 学习记录--C/C++-PTA 7-17 爬动的蠕虫
  • c#自动更新-源码
  • WPF的Prism框架的使用
  • 算法刷题-链表系列-两两交换链表结点、删除链表的倒数第n个元素
  • C#打印设计器
  • 72.git指南(简单)
  • SpringCloud系列教程:微服务的未来 (五)枚举处理器、JSON处理器、分页插件实现
  • DeepSeek24小时写作机器人,持续创作高质量文案
  • pnpm的使用
  • Python 字典思维导图
  • 制药行业 BI 可视化数据分析方案
  • dedecms 开放重定向漏洞(附脚本)(CVE-2024-57241)
  • Docker学习
  • dma_ddr 的编写 通过mig控制ddr3
  • MySQL数据库入门到大蛇尚硅谷宋红康老师笔记 基础篇 part 13
  • 掌握SQL多表连接查询_轻松处理复杂数据关系
  • [0689].第04节:Kafka与第三方的集成 – Kafka集成SpringBoot