dispatch_set_target_queue如何工作?

2023-11-26

由于缺乏材料dispatch_set_target_queue,我来这里寻求帮助,所以谢谢!

这是我的测试代码:

dispatch_queue_t mySerialDispatchQueue1 = dispatch_queue_create("come.itenyh", NULL);
dispatch_queue_t mySerialDispatchQueue2 = dispatch_queue_create("come.itenyh1", NULL);

dispatch_set_target_queue(mySerialDispatchQueue1, mySerialDispatchQueue2);

dispatch_async(mySerialDispatchQueue1, ^{[self task:@"s1"];});

dispatch_async(mySerialDispatchQueue2, ^{[self task:@"p1"];});

dispatch_async(mySerialDispatchQueue1, ^{[self task:@"s2"];});

- (void)task:(NSString *)taskid
{

        NSLog(@"Now executing taskid:%@", taskid);

        [NSThread sleepForTimeInterval:5];

}

现在如果我设置

 dispatch_set_target_queue(mySerialDispatchQueue2, mySerialDispatchQueue1);

那么结果是:

2014-04-16 22:23:49.581 ITGCDLearning[66758:1303] Now executing taskid:s1
2014-04-16 22:23:54.585 ITGCDLearning[66758:1303] Now executing taskid:s2
2014-04-16 22:23:59.586 ITGCDLearning[66758:1303] Now executing taskid:p1

相反,如果我设置

dispatch_set_target_queue(mySerialDispatchQueue1, mySerialDispatchQueue2);

那么结果是:

2014-04-16 22:28:37.910 ITGCDLearning[66795:1303] Now executing taskid:s1
2014-04-16 22:28:42.913 ITGCDLearning[66795:1303] Now executing taskid:p1
2014-04-16 22:28:47.915 ITGCDLearning[66795:1303] Now executing taskid:s2

我知道dispatch_set_target_queue功能可以

  • 改变队列的优先级
  • 创建调度队列的层次结构。

我认为是第二点导致了我的代码中的结果,但并不真正知道具体细节。有人可以向我解释一下吗?


根据我的说法,当您将目标队列设置为其他队列时,您正在同步两个队列的任务,因此
第一种情况:

dispatch_set_target_queue(mySerialDispatchQueue2, mySerialDispatchQueue1);

mySerialDispatchQueue1是目标队列,因此所有任务都添加到mySerialDispatchQueue2也从队列中排队mySerialDispatchQueue1。由于它是目标队列。所以mySerialDispatchQueue1已经有两项任务,因此队列中还有一项任务mySerialDispatchQueue2稍后添加。

在第二种情况下:

dispatch_set_target_queue(mySerialDispatchQueue1, mySerialDispatchQueue2);

你的目标队列是mySerialDispatchQueue2所以在开始时没有任务然后任务从mySerialDispatchQueue1添加在mySerialDispatchQueue2那么它自己的任务就在队列中。这样就添加了任务。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dispatch_set_target_queue如何工作? 的相关文章

  • iOS - UITableViewCell 使文本加粗

    我有一个字符串 NSString userInfo James Johnson james 我想做的就是大胆James Johnson并保留 james正常字体 所以我尝试过的是使用NSAttributedString但为了完成这个过程 我
  • 如何在 NSTextView 中使用 SPACE 而不是 TAB

    我只知道如何修改 NSTextView 中的制表符宽度 NSMutableParagraphStyle paragraphStyle self defaultParagraphStyle mutableCopy paragraphStyle
  • 如何判断 NSObject 是否具有某个属性?

    假设在 Apple API 1 0 版中 有一个 NSFoo 类 其属性为 color API 1 1 添加了属性 size 我想知道是否可以使用 getter myFoo size myFoo respondsToSelector sel
  • 如何使用 alamofire 通过基本身份验证上传图像?

    我正在尝试使用 alamofire 4 7 1 和此代码上传图像 但说实话 我怀疑我没有编写正确的代码来上传图像 func uploadDefect defectRemark String defectLocation String def
  • 从未调用过交互式委托方法

    我想在 ViewController 1 和 NavigationViewController 2 之间进行交互式转换 NavigationController 通过按钮调用 因此呈现时没有交互转换 它可以通过按钮或 UIPanGestur
  • BigQuery 未显示链接的 Firebase Analytics 事件日志的任何数据集

    我将我的帐户链接到 Big Query 但 Firebase Analytics 事件不会自动加载到 BigQuery 中 显示 未找到数据集 警告 我的工作进度附在下面 请查收 I have getting firebase Analyt
  • 如何在 iOS 13 中将 UISegmentedControl 的背景颜色设置为白色

    iOS 13 对 UISegmentedControl 进行了一些更改 包括切换所选片段时的非常漂亮的动画 但是我注意到它没有显示backgroundColor属性正确 它似乎总是有一点色彩 我见过回答如何设置的问题selectedSegm
  • 在 WKWebView 中禁用缩放?

    有谁知道在 WKWebView 中禁用双击和捏缩放的简单方法 我尝试过的任何方法都不起作用 Webview scrollView allowsMagnification false Error value of type WKWebView
  • 未知异常和崩溃

    当我尝试快速滚动表格视图或从远程重新加载数据时 我的应用程序崩溃了 当我先进行远程获取然后滚动表格视图时 一切似乎都工作正常 我不知道下面的崩溃日志意味着什么 它只是有时工作正常 有时崩溃 Incident Identifier 710A1
  • 无法以编程方式快速设置 NSLayoutConstraint 乘数...“无法分配给此表达式的结果

    我试图以编程方式快速设置乘法器的约束 当我设置该值时 它只会给我错误 无法分配给该表达式的结果 我用 IBOutlet 声明了 NSLayoutConstraint 然后设置乘数 就像我对另一个常量所做的那样 效果很好 但这个不会接受它 I
  • 当应用程序进入前台时,如何重新启动基于块的动画?

    我有以下基于块的动画 UIView animateWithDuration 0 5f delay 0 0f options UIViewAnimationOptionRepeat UIViewAnimationOptionAutorever
  • GLKit的GLKMatrix“列专业”如何?

    前提A 当谈论线性存储器中的 列主 矩阵时 列被一个接一个地指定 使得存储器中的前 4 个条目对应于矩阵中的第一列 另一方面 行主 矩阵被理解为依次指定行 以便内存中的前 4 个条目指定矩阵的第一行 A GLKMatrix4看起来像这样 u
  • iOS7 由 Interface Builder 生成的 NSIBPrototypingLayoutConstraint 自动布局约束问题

    以前在 iOS6 中 我的聊天消息视图控制器使用 IB 中精心构建的自动布局约束正确显示和动画 下面是 Xcode 5 中删除了约束的当前视图层次结构 升级到 XCode 5 和 iOS7 后 我发现我需要清除所有旧的约束才能解决默认的半透
  • 从现有坐标地图套件中查找最近的位置

    我正在为拥有多家商店的客户开发 iPhone 应用程序 目标 C 我有数组中所有商店 20 的坐标 纬度 长 目前我正在考虑循环遍历商店坐标数组并获取从用户当前位置到商店位置的距离 然后将它们添加到数组中并按最小距离进行排序 这是正确的方法
  • 无法将项目添加到 NSMutableArray ivar

    我的目标是将字符串添加到数组中 并在我调用的方法中执行此操作 在这个方法中 我在数组中得到一个空值 但不知道为什么 我在课程开始时有这样的内容 NSMutableArray listOfEvents 以及我在每个事件上调用的方法 void
  • 有没有办法在 onclick 触发时禁用 iPad/iPhone 上的闪烁/闪烁?

    所以我有一个有 onclick 事件的区域 在常规浏览器上单击时 它不会显示任何视觉变化 但在 iPad iPhone 上单击时 它会闪烁 闪烁 有什么办法可以阻止它在 iPad iPhone 上执行此操作吗 这是一个与我正在做的类似的示例
  • ios8 键盘高度有所不同

    我使用下面的代码来获取键盘高度 该高度在带有 ios8 的 iPhone 5s 设备中与带有 ios7 的 IPhone4s 设备中有所不同 因此 当我在带有 ios8 的 iPhone5s 中点击它时 我的文本字段移动得非常高 而相同的代
  • UIViewController 内的 UIsearchController 使用自动布局

    有没有人成功实施过UIViewController其中包含两个UISearchController searchBar and a UItableView使用自动布局来布局所有内容 我正在尝试实现类似的目标1密码 https itunes
  • 使用日期 Swift 3 对字典数组进行排序

    我有一个名为 myArray 的数组 其中添加了字典 我希望该字典按时间排序 这是字典中的键 那个时间是在 String 中 时间的日期格式为 yyyy MM dd HH mm ss 我尝试使用下面的代码解决方案 但给出了 从 字符串转换
  • 如何在 UITableView 的 switch 语句中创建变量?

    我正在构建一个包含三个部分的 tableView 我已经完成了前两个工作 但最后一个有点阻力 我的问题似乎涉及尝试在 switch 语句中声明变量 实际上是嵌套的 switch 语句 据我所知 这不是一个好主意 但在这种情况下 这似乎是唯一

随机推荐

  • Android 自定义键盘 - 预览视图受限于父布局

    我创建了一个自定义键盘 它工作正常 除了顶部两行按键的预览视图显示得不够高 它们的垂直位置受到父布局的限制 这些屏幕截图说明了问题 0 和 8 的预览位置很好 但对于 5 和 2 则不然 键 0 的预览显示在按钮上方 键 8 的预览也显示在
  • 设备管理接收器在某些版本中无法工作

    我正在开发一款安全应用程序 可以保护设备免受陌生人的侵害 在我的应用程序中 如果用户尝试使用错误的 PIN 图案 密码解锁设备 我有一个功能应该从前置摄像头捕获图像 我有一个类似这样的代码 public class MyAdminRecei
  • 在 cython 中生成高斯随机数的最有效和可移植的方法是什么?

    我正在编写一个 cython 应用程序 我需要在紧密的嵌套循环中动态生成高斯随机变量 我希望在不引入任何额外依赖项 例如 GSL 的情况下执行此操作 对于我目前能够做到这一点的最小版本均匀随机即时数字 from libc stdlib ci
  • 带连接的 Codeigniter 活动记录更新语句

    这是我试图通过活动记录实现的查询 UPDATE Customer donations cd join Invoices i on i cd id cd cd id set cd amount 4 cd amount verified 1 W
  • Redis 和查询值

    Redis 在概念上与我使用的传统 SQL 数据库不同 我试图弄清楚它是否适合我的项目 我一直在四处寻找 但似乎找不到我的问题的答案 我需要存储一组用户 每个用户都有一个唯一的 ID 和多个与其关联的值 例如他们的姓名 看来我可以简单地将它
  • linq中如何处理空值?

    recordsList ListOfRecords new StudentRecordsBAL GetStudentsList Select q gt new StudentRecords RollNumber q RollNumber C
  • 如何为具有单个可为空成员的案例类编写 Play JSON 写入转换器

    在 Play 2 3 中 我有一个带有单个可选双成员的案例类 case class SomeClass foo Option Double 我需要一个 JSON 写入转换器来将成员处理为可为空 implicit val someClassW
  • 是否可以使用管道发送 ffmpeg 图像?

    我想将图像作为输入发送到 ffmpeg 并且希望 ffmpeg 将视频输出到流 webRtc 格式 我找到了一些信息 根据我的理解 这表明这是可能的 我相信 ffmpeg 可以从管道接收图像 有谁知道这是如何做到的 我想要发送图像作为输入到
  • Thread.Sleep() 不冻结 UI

    首先 我是初学者C 我想做这个 class2 method 79 null RoomItem 0 num num2 0 false true true System Threading Thread Sleep 250 class2 met
  • Gson 并反序列化其中包含数组的对象数组

    我正在尝试使用 Gson 反序列化从我的 web 服务返回的 json 字符串 该结构将返回为TypeDTO where TypeDTO is like int id String name ArrayList
  • python dict str() 函数可靠地对键进行排序吗?

    在Python中 两个字典 1 1 2 2 3 3 and 3 3 2 2 1 1 产生 1 1 2 2 3 3 str 何时执行 我可以依赖这种排序 或者至少依赖这样一个事实 包含相同键 值对的字典在通过 str 函数时会生成相同的字符串
  • x:Bind 中 ElementName 与 DataTemplates 的替代方案

    使用传统的 Binding 语法时 您可以指定元素名称以指向页面上的特定控件 并能够访问其属性 例如 如果页面名为page你可以这样做 Binding ElementName Page Path Name 随着 x Bind 它说的语法 使
  • 如何解决 WPF 设计器错误“类型 {0} 不支持直接内容”。

    以下 XAML 如下 在资源中定义了一个自定义集合 并尝试使用自定义对象填充它
  • 在 iPhone 应用程序中验证用户身份

    我正在为我们的 Web 应用程序开发 HTTP API 最初 API 的主要使用者将是我们正在开发的 iPhone 应用程序 但我在设计它时考虑到了未来的用途 例如其他平台的移动应用程序 我正在尝试确定对用户进行身份验证的最佳方式 以便他们
  • 如何从每组中选择前 5%?

    我有一个这样的示例表 CREATE TABLE TEMP Category VARCHAR 100 Name VARCHAR 100 INSERT INTO TEMP VALUES A John INSERT INTO TEMP VALUE
  • 在 Azure Functions 中使用 Python 3

    我的目标是让一些 Python 3 代码作为 Azure Functions 运行 但我无法让 Python 3 工作 我意识到 Azure Functions 中的 python 支持仍处于实验阶段 这是我尝试过的 创建一个新的函数应用程
  • Flutter“不要跨异步间隙使用 BuildContext”

    基本上 当用户在对话框中按 注销 时 我想返回到我的登录视图 onSelected value async switch value case MenuAction logout final shouldLogout await showL
  • SqlCommand.CommandTimeout 和 SqlConnection.ConnectionTimeout 之间有什么区别?

    有什么区别吗SqlCommand CommandTimeout and SqlConnection ConnectionTimeout在 NET 中 Yes CommandTimeout是单个命令需要多长时间才能完成 ConnectionT
  • Pandas - 按一列分组并聚合其他列以列出

    我有一个数据框 其中有多个用户条目 这些用户还可以分配给多个 ID 我想按用户进行分组 然后将这些 ID 的列表存储在另一列中 如下所示 我想从这里开始 df1 pd DataFrame USER BOB STEVE PAUL KEITH
  • dispatch_set_target_queue如何工作?

    由于缺乏材料dispatch set target queue 我来这里寻求帮助 所以谢谢 这是我的测试代码 dispatch queue t mySerialDispatchQueue1 dispatch queue create com