在当前队列上同步调度

2023-12-25

我知道你可能会觉得这是一个奇怪的问题,但我刚刚学习 GCD,我想完全理解它的所有方面。所以这里是:

是否有任何理由在当前队列上分派任务同步?

例如:

    dispatch_queue_t concurrentQueue = dispatch_get_global_queue(...);
    dispatch_async(concurrentQueue, ^{
       //this is work task 0

       //first do something here, then suddenly:

       dispatch_sync(concurrentQueue, ^{
               //work task 1
       });

       //continue work task 0
    });

我明白一件事:如果代替concurrentQueue我用一个serial队列,然后我在该串行队列上遇到死锁,因为work task 1无法启动,直到work task 0完成(因为串行队列保证了执行顺序),同时work task 0无法继续执行,因为它等待 SYNC dispath 函数返回(如果我错了,请纠正我,这会让我成为一个十足的菜鸟)。

那么回到最初的想法,上面的代码和不调用的相同代码之间有什么区别吗?dispatch_sync我简单写的函数work task 1直接打码?


不,我想不出一个理由dispatch_sync在您已经所在的同一个并发队列上。如果您这样做,GCD 将立即在同一线程上内联调用您的块,就像您直接调用它一样。 (我检查过。)正如您所指出的,在串行队列上执行此操作将使您陷入僵局。

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

在当前队列上同步调度 的相关文章

随机推荐

  • ValueError:预期目标大小 (128, 44),得到 torch.Size([128, 100]),LSTM Pytorch

    我想建立一个模型 根据前面的字符预测下一个字符 我已将文本拼接成长度 100 的整数序列 使用数据集和数据加载器 我的输入和目标变量的维度是 inputs dimension batch size sequence length In my
  • 如何从两个 URL 解析两个 XML 文件(Swift)

    我有两个 XML URL 第一个 URL 显示SongName on the Table第二个 URL 是SongPath 当我点击SongName在桌子上它转到SongPath在第二个网址中 这是table https i stack i
  • SSL:400 未发送所需的证书

    代码和输入 我正在尝试建立 SSL 连接 但我得到了400 No required SSL certificate was sent来自服务器的响应 我正在以标准方式执行此操作 例如所描述的here https stackoverflow
  • Scala 中finally 块的返回值[重复]

    这个问题在这里已经有答案了 可能的重复 scala 中的 return 和 try catch finally 块评估 https stackoverflow com questions 8443743 return and try cat
  • 带有导航组件的 BottomNavigationView - 选定的片段未显示

    我目前正在迁移到 android 导航组件 并且在 BottomNavigationView 中选择新项目时无法使片段转换正常工作 我按照官方文档中的说明进行操作 没有发现所选片段未显示的任何问题 在activity的onCreate方法中
  • 如何正确输出闪亮的Plotly图?

    我正在尝试根据纽约犯罪历史数据制作一个闪亮的应用程序 我正在使用单闪亮页面方法 这是数据 https data world data society nyc crime data https data world data society
  • 为什么 IronPython 告诉我 pip 是一个包而不是可执行文件?

    我是 Python 的新手 我想尝试看看 Pyomo 用于数学建模的 Python 包 是否可以在 IronPython 下工作 因为我用于生成 Pyomo 所需数据的所有代码都是用 C 编写的 我安装了 IronPython 2 7 5
  • Microsoft.Identity.Web:未触发 OnTokenValidated 事件

    我想做的是在身份验证后添加声明 以下是注册的示例OnTokenValidation事件并不能解决问题 该事件永远不会触发 我在用着Microsoft Identity Web在 Azure AD B2C 上进行身份验证 那部分有效 我如何使
  • 如何使用net.sf.json在Java中生成JSON字符串?

    我正在努力用 Java 生成 JSON 字符串 import net sf json JSONArray import net sf json JSONObject JSONArray ja new JSONArray JSONObject
  • Anki - 我应该挂钩什么来添加我自己的字段描述符?

    类似于 field and text field 我正在尝试创建我自己的字段描述符 为了做到这一点 我需要知道要挂钩什么函数 我不知道 Anki 是否将卡片预编译为 HTML 或在学习过程中即时生成它们 所以我不知道从哪里开始寻找这个功能
  • 如何以编程方式打开 Bootstrap 下拉菜单

    当我单击另一个下拉列表中的项目时 我试图打开 Bootstrap 下拉列表 这个想法是从第一个下拉列表中选择一个城市 然后脚本将自动打开第二个包含区域的下拉列表 并仅显示与所选城市相对应的区域 这是我的JS sidebar filter c
  • UTF-8 文本到剪贴板 C

    我一直在寻找如何带一根绳子 const char output 到剪贴板 SetClipboardData CF UNICODETEXT hMem 我尝试过 MultiByteToWideChar 但我只收到噪音和相互矛盾的声明 即您无法将
  • SQL 连接 - 对不同值的 COUNT 求和

    假设我有两个表 org 和 states orgs 是 o ID state abbr states 是 state abbr state o ID state abbr 1 CT 2 OH 3 OH state abbr state CT
  • BASH 语法错误接近意外标记“完成”[重复]

    这个问题在这里已经有答案了 知道问题出在哪里吗 我的代码是 bin bash while do echo Press CTRL C to stop sleep 1 done 将其另存为 sh 并运行 bash file sh CentOS
  • 如果没有创建该类的对象,该类的静态成员是否会占用内存?

    假设我有一个类 并且其中有一个静态成员 但我不创建该类型的任何对象 静态变量会占用内存吗 如果它会被占用 那么将它放在一个类中还有什么意义呢 No 静态成员不属于类的实例 它们甚至不会增加实例和类大小 1 位 struct A int i
  • 谷歌 php api 应用程序引擎上的 PHP 致命错误

    当我尝试实现 Google PHP API 时 我的应用程序引擎出现问题 它在curl 文件 Goolge IO php 中给了我一个致命错误 它是提供的库文件之一https code google com p google api php
  • 保存动作之间的状态

    我想请教一下解决办法 例如我们有一个页面 我有一个链接到该页面的另一个操作 我希望能够保存页面上输入的数据值 例如 我转到另一个页面输入数据然后返回 就像巫师一样 但问题是我们可以从不同的页面进行操作 并且需要保存多种数据类型 明白了吗 有
  • 时间顺序(小时)

    I tried seq from as POSIXct 2012 1 1 0 tz UTC to as POSIXct 2012 1 3 23 tz UTC by hour 但我只得到最后一天的 1 小时 0 00 00 而不是 24 小时
  • 错误:[Microsoft][ODBC 驱动程序管理器] 未找到数据源名称且未指定默认驱动程序

    将 NET 连接到 sybase 服务器时 我收到以下错误消息 Microsoft ODBC 驱动程序管理器 未找到数据源名称且未指定默认驱动程序 这以前工作正常 具有相同细节的系统 DSN 可以工作 并且通过 vs net 的数据连接也可
  • 在当前队列上同步调度

    我知道你可能会觉得这是一个奇怪的问题 但我刚刚学习 GCD 我想完全理解它的所有方面 所以这里是 是否有任何理由在当前队列上分派任务同步 例如 dispatch queue t concurrentQueue dispatch get gl