关于DispatchTime和DispatchWallTime

iOS开发-dispatch_time_t dispatch_time_t 的定义: typedef uint64_t dispatch_time_t; /** 描述:时间的抽象表示; DISPATCH_TIME_NOW(0)表示“现在” DISPATCH_TIME_FOREVER(~0)表示“无穷大” 两者之间的每个值都是不透明的编码。 */ dispatch_time_t 的创建: dispatch_time_t dis... 阅读详情

先看以下代码,正常来说执行效果是一样的,都是程序执行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

GCD学习之dispatch_after dispatch_after 经常会有这样的情况:想要在3秒后执行处理。这种想在指定直接后执行处理的情况,可使用dispatch_after函数。 在3秒后将指定的Block追加到Main Dispatch Queue中的源代码为: dispatch_time_t time = dispatch_time(DISPATCH_TIME_NOW,3ull * NESC_PER_SEC 阅读详情

相关推荐

C/C++关于VScode报错“终端将被任务重用,按任意键关闭”的解决方案

这其实不是一种报错,有这个提示的原因是本地端口是被共享的,所以必须关闭一个进程才能执行另一个,只需要对 tasks.json文件做一些修改即可。 报错时候 此时的tasks.json为: { "version": "2.0.0", "command": "g++", "args": ["-g","${file}","-o","${fileDirname}/${fileBasenameNoExtension}.exe"], // 编译命令参数 "problemMatche

Jerry Man的博客 6424

dispatch_walltime与dispatch_time_t 的区别

dispatch_walltime的官方文档解释如下 Function dispatch_walltime // 根据系统时钟,创建一个绝对时间 Creates a dispatch_time_t using an absolute time according to the wall clock. Declaration dispatch_time_t dispatch_walltime(con...

王学森的专栏 1645

逆变器专题(3)-锁相环-PLL

锁相环作为并网逆变器的第一道门户,其锁相的精度将直接影响逆变器是否并网成功,若锁相精度较差,则会直接导致系统的功率因数下降,产生无功等等。在有关文献中指出,提高PLL带宽可以准确且快速进行锁相,而当电网电压含有谐波时,可适当降低带宽抵制谐波的干扰。成为变化量,而如果两者旋转速度达到一致时,所在的交轴分量。ki很大,即带宽很大时,稳定裕度不够,锁相环锁不住。为交流量,当频率锁定而相位没有锁定时,即。,即控制环前馈,可实现将锁相速度的加快。控为0,则可实现系统完美锁相。mod,取余,可减少存储空间。

cyc19980105的博客 6183

Swift Core Libraries中的dispatch_time机制详解

在Swift Core Libraries的libdispatch模块中,`dispatch_time`和`dispatch_walltime`函数是处理时间相关操作的核心工具。这些函数用于创建时间里程碑(temporal milestones),这些里程碑可以被用于各种需要超时或按计划执行的dispatch操作中。 ## 时间里程碑的基本概念 时间里程碑(`dispatch_time_t`)...

gitblog_00434的博客 502

linux 基于debian/ubuntu AB系统适配(二)-updateEngine移植

其实A/B系统的原理很简单,大部分的工作都集中在uboot上,rootfs只是起到一个辅助的作用,但这个作用也就必不可少的。你会发现在这个其中并没有kernel的参与。

badbayyj的博客 1033

华为OD机试双机位C卷-停车场收入统计 (Py/Java/C/C++/Js/Go)

华为OD机试双机位C卷 停车场收入统计,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解。华为OD机试 - 停车场收入统计。

qq_45776114的博客 2185

GCD全解-dispatch_after/dispatch_time-t延迟操作

1、延后执行:dispatch_after 2、延长时间:dispatch_time_t 3、拓展

chenzimin_blog 2601

应用商店评论分析实战:Python逆向工程破解Google Play加密接口与NLP建模

在移动互联网时代,应用商店中的用户评论成为了开发者优化应用、提升用户体验的重要依据。然而,Google Play等应用商店对评论数据进行了加密处理,直接爬取难度较大。本文将介绍如何使用Python逆向工程破解Google Play的加密接口,实现对应用商店评论的实时采集,并结合NLP(自然语言处理)技术进行情感分析和主题建模,为开发者提供有价值的数据支持。

u014481728的博客 1348

iOS - dispatch_time_t

dispatch_time_t 类型,它的创建有两个函数 1. dispatch_time(<#dispatch_time_t when#>, <#int64_t delta#>) 第一个参数是从什么时间开始,一般直接传 DISPATCH_TIME_NOW 表示从现在开始 第二个参数表示具体的时间长度(不能直接传 int 或 float), 可以写成这种形式 (int64...

宋卓的博客 1016

YOLOv11改进策略【损失函数篇】| WIoU v3:针对低质量样本的边界框回归损失函数

是一种基于IoU的损失函数,旨在解决目标检测中边界框回归损失函数在处理低质量训练数据时的问题。论文链接:https://arxiv.org/pdf/2301.10051 源码链接:https://github.com/Instinct323/wiou此处需要查看的文件是中定义了模型的损失函数和计算方法,我们想要加入新的损失函数就只需要将代码放到这个文件内即可将下方的函数替换原本的函数即可: 用于计算各种损失。在内修改如下代码,使模型调用此损失函数。 tal.py中是一些损失函数的功能应用。在内修改如下代码,

Limiiiing的博客 3797

【Frida Android】实战篇4:SSL Pinning 证书绑定绕过 Hook 教程(一)

在前两章中,我们学习了中间人抓包与 Hook 抓包的基础方法,这些方法在理想环境下能够有效获取网络请求数据。但在实际的企业级应用中,出于安全防护需求,很多 APP 会启用证书绑定(SSL Pinning)机制。这种机制会让客户端对服务器证书的校验更为严格,导致常规的抓包方法(即使将 BurpSuite/Charles 证书安装到系统信任区)也无法生效。因此,从本章开始,我们将系统学习 SSL Pinning 机制的绕过技术。SSL Pinning(证书绑定)是客户端校验服务器身份的进阶安全机制。

水滴石穿 1610

GCD 中的时间

GCD 中的时间 在 GCD 中,定义了一个类型 dispatch_time_t 来表示时间,其单位是纳秒。 typedef uint64_t dispatch_time_t; 从定义可知,其实际是 uint64_t 类型的别名,即一个 64 位的无符号整型值。 另外,GCD 中定义了两个宏来表示当前时间点零以及无穷大的时间。 #define DISPATCH_TIME_NOW (0ull) #d...

集腋成裘 1100

Opencv项目实战:20 单手识别数字0到5

今天要做的是单手识别数字0到5,通过在窗口展示,实时的展示相应的图片以及文字。在这里,我提供一下识别更多数字的方法(0-10)。首先最简便的是双手识别,完全不用更改代码,把图片处理好就行了;其次,就是按照最上面的那张图片,参数figureup是一个长度为5的列表[0,0,0,0,0],你可以参照着手势将其打印出来,然后将其用if条件判断。当然,在我们这边最常见的还是华北手势表示数字,大家按照自己的习惯来就行。

m0_62919535的博客 2877

dispatch_time_t

dispatch_time_t 类型,它的创建有两个函数      1. dispatch_time(, )         第一个参数是从什么时间开始,一般直接传 DISPATCH_TIME_NOW; 表示从现在开始         第二个参数表示具体的时间长度(不能直接传 int 或 float), 可以写成这种形式 (int64_t)3* NSEC_PER_SEC        

wpeng20125的博客 4266

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

iOS GCD使用指南

Grand Central Dispatch(GCD)是异步执行任务的技术之一。一般将应用程序中记述的线程管理用的代码在系统级中实现。开发者只需要定义想执行的任务并追加到适当的Dispatch Queue中,GCD就能生成必要的线程并计划执行任务。由于线程管理是作为系统的一部分来实现的,因此可统一管理,也可执行任务,这样就比以前的线程更有效率。

Bannings的专栏 4万+

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

NSTimer,dispatch_time_t, CADisplayLink(含示例代码)

NSTimer,dispatch_time_t, CADisplayLink

opentogether的博客 2192

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

GCD全解-03-dispatch_after/dispatch_time-延迟调度和操作

dispatch_after 延时操作的API,通常Queue会在主线程,但是也可以自定义线程 * @functoin Schedule a block for execution on a given queue at a specified time. * @param when * A temporal milestone returned by dispatch_time() or...

zhuge1127的博客 2555

关于dispatch_semaphore的使用

转载请注明出处http://www.cnblogs.com/snailHL/p/3906112.html dispatch_semaphore是GCD用来同步的一种方式,与他相关的共有三个函数,分别是 dispatch_semaphore_create,dispatch_semaphore_signal,dispatch_semaphore_wait。 下面我们逐一介绍三个函数: ...

ak3511016的博客 306

GCD之定时器dispatch_source_t(转载暂时未完全理解)

#import "ViewController.h" @interface ViewController (){ IBOutlet UIButton *l_timeButton; } @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; ...

weixin_34032621的博客 264

使用dispatch_after在一段时间后执行处理

想在指定时间后执行处理的情况,可以用dispatch_after函数实现。 我们写一段在3秒后将指定的block追加到Main Dispatch Queue的代码: dispatch_time_t time=dispatch_time(DISPATCH_TIME_NOW, 3ull*NSEC_PER_SEC); dispatch_after(time, dispatch_get_main_queue(), ^{ NSLog(@"3 seconds"); }); 注意

qq_34241037的博客 1344

iOS多线程的初步研究(九)-- dispatch源

原文地址  http://www.cnblogs.com/sunfrog/p/3243230.html dispatch源(dispatch source)和RunLoop源概念上有些类似的地方,而且使用起来更简单。要很好地理解dispatch源,其实把它看成一种特别的生产消费模式。dispatch源好比生产的数据,当有新数据时,会自动在dispatch指定的队列(即消费队列)上运行

冷胜任 的专栏 1万+

封装一个GCD定时器,彻底解决定时器循环引用、释放时机问题

相信大家在开发中都会使用到定时器, 但又常常对定时器的循环引用问题, NSTimer 释放时机的选择上,劳神费力! 读了本文,这些再也不是问题! 关于 NSTimer 创建定时器的方法,我就不多做描述了,网上很多例子,但也总觉得很麻烦。本文主要讲使用GCD的方法。

zxw_xzr的博客 9480

dispatch_after使用方法详解

dispatch_after能让我们添加进队列的任务延时执行,该函数并不是在指定时间后执行处理,而只是在指定时间追加处理到dispatch_queue     该方法的第一个参数是time,第二个参数是dispatch_queue,第三个参数是要执行的block。     dispatch_time_t有两种形式的构造方式,第一种相对时间:DISPATCH_TIME_NOW表示现在,NSEC_

richard_如风的专栏 2万+

快捷之道:轻松地使用 DispatchTime

作者:Russ Bishop,原文链接,原文日期:2016-11-10译者:Cwift;校对:walkingway;定稿:CMB 这是篇拆开即食的福利小短文。我发现 DispatchTime 使用起来没有想象中便利。在一款 GUI 的应用中,我总是想要指定一个 TimeInterval,也就是以秒为单位的整数或者分数形式。 值得庆幸的的是...

weixin_33749242的博客 281
上一篇: weak的实现原理
下一篇: NSCoding 与归档解档
gp103
博客等级 码龄11年 158粉丝 45原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值