多线程:只有在执行完其他方法后才调用执行方法

2024-05-06

我正在尝试根据要求异步处理方法,一旦第一个方法完成,只有第二个方法应该开始执行。问题是第一个方法本身具有在后台线程上运行的代码。

我尝试了dispatch_semaphore_wait,但这也不起作用。

dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);

        dispatch_group_t group = dispatch_group_create();


        dispatch_group_async(group, queue, ^{

            [self firstMethod];
            NSLog(@"firstMethod Done");

        });
        dispatch_group_notify(group, queue, ^ {

            NSLog(@"1st method completed");
            NSLog(@"2nd method starting");

            [self secondMethod];

        });

FirstMethod 本身运行在另一个工作线程上,如下所示

-(void)firstMethod
{
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
   //processing here.....       

 }];

实现它的最佳方法是什么,我无法更改 firstMethod 的定义,因为它是由某些第三方提供的,并且更改它意味着更改调用该方法的许多现有代码


您可以使用完成块。你只需要这样修改firstMethod:

- (void)firstMethodWithOnComplete:(void (^)(void))onComplete {
      dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
          //processing here.....
          onComplete();
       });
}    

然后这样使用它:

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

多线程:只有在执行完其他方法后才调用执行方法 的相关文章

随机推荐

  • UICollectionView 访问错误 -> UICollectionViewData _setLayoutAttributes:GlobalIndex:

    我使用 UICollectionView 来显示大量图像 其中一批为 32 个 每次到达集合视图的末尾时 我都会加载另一批 32 个图像 并调整 collectionView contentsize width 的大小以接受新项目 通过使用
  • 进度对话框未显示在屏幕上

    我根据亲爱的 Mayank answer 编辑了我的代码 但它没有显示在方法开始之前在 displayMsg 方法中作为输入发送的任何消息 我应该说 MethodTest 是通过 nfc 和 onNewIntent Intent Inten
  • 如何在 Web Api 中将对象作为参数传递

    我想在我的 web api GET 和 POST 方法中将对象作为参数传递 我的代码是 HttpGet Route mytest list model public IHttpActionResult GetAllTypes TestMod
  • 在java中使用共享密钥加密/解密?

    我有客户令牌 我正在从一个 Web 应用程序 如 app1 发送到另一个 Web 应用程序 如 app2 我想加密客户令牌 在 app1 上 并使用在 app1 和 app2 上共享的密钥在 app2 上对其进行解密 我不知道如何开始 这将
  • 如何跟踪用户在我的 Android 应用程序上花费了多少时间?

    我想跟踪用户在我的 Android 应用程序上花费了多少时间 当用户在应用程序上处于活动状态时 我可以获取以小时为单位的时间吗 它会自动跟踪 Note 应用程序不在 Google Play 上 此代码将帮助您获取应用程序使用时间 long
  • 在 Inno Setup 中实现脚本常量时出现“预期标识符”或“原型无效”

    因此 鉴于此功能 我在GetRoot ROOTPage Values 0 线 我希望它告诉我ROOTPage没有定义 const DefaultRoot C IAmGRoot Var ROOTPage TInputQueryWizardPa
  • Java无限信号量

    想知道如何not使用信号量限制连接 或任何东西 所以你可能会想 这听起来很愚蠢 但是 它稍微简化了我的代码 因为它让我可以统一处理有限和无限的情况 请注意 我并不是在寻找有关如何编写类似内容的建议 if limited semaphore
  • K&R 之后用什么书来学习纯 C 编程? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • JS jQuery - 检查值是否在数组中

    我更喜欢 PHP 而不是 JS 我认为我的问题更多是语法问题 我有一个小的 jQuery 来 验证 并检查输入值 它适用于单个单词 但我需要数组 我正在使用inArray jQuery 的 var ar value1 value2 valu
  • Android Vector Drawable 不支持。如何修复它?

    尝试从 AndroidStudio 2 2 Ubuntu 14 04 的本地 svg 文件生成矢量资源时出现此错误 Could not generate a preview In icon svg ERROR line 6
  • 在Application_Start中访问ninject内核

    我正在使用 Ninject 和随 nuget 安装的 MVC3 扩展 我的内核设置代码位于 App Start NinjectMVC3 cs 文件中 控制器中的一切都运行良好 但我无法弄清楚如何 正确 绑定 Global asax cs M
  • 将 JS 文件导入 Typescript

    我正在考虑转向 Typescript 目前正在考虑慢慢地 如果可能的话 逐个文件地执行此操作 现在我目前拥有的系统是用 Webpack 构建的 我想继续这个来构建我的整个包 我有一个用于定义的 d ts 文件 但我需要继续导入当前引发错误的
  • PHP 错误:php_network_getaddresses:getaddrinfo 失败:(从其他站点获取信息时。)

    尝试从外部源获取信息时 我收到以下错误 Warning php network getaddresses getaddrinfo 失败 第 行名称解析暂时失败 昨天一切都很好 那么这个脚本发生了什么 它不起作用并给我上面的错误 有什么解决方
  • 将 sudo 与 Python 脚本结合使用

    我正在尝试编写一个小脚本来在每次执行脚本时安装 VirtualBox 共享文件夹 我想用Python 来做这件事 因为我正在尝试学习它来编写脚本 问题是我需要特权才能启动挂载命令 我可以将脚本作为 sudo 运行 但我更喜欢它自己创建 su
  • Powershell“Set-PSDebug -Trace 2”导致意外结果

    我遇到一个奇怪的问题 在设置 Set PSDebug Trace 2 时出现不同的行为 我追踪到 switch 语句未正确执行 并且能够在 Powershell V3 上重现它 但不能在 Powershell V2 或 Powershell
  • 当存在多个字段分隔符时使用 AWK 忽略字段内的逗号

    我想像下面这样解析 CSV 记录awk or gawk 这些字段以逗号分隔 但最后一个字段 6 很特殊 因为它确实由子字段组成 这些子字段由 作为字段分隔符 或者 准确地说 分隔 这本身不是问题 我可以使用awk F 设置替代字段分隔符 但
  • 在所有布局方法之后调用哪个 Activity 方法?

    我需要做一些事情Activity调用所有布局方法后 所有Views 已就位并且Activity已准备好显示 哪种方法可以做到这一点 如果你想获得视图的宽度或其他东西 这应该有效 将其添加到您的 Activity 的 onCreate 中 V
  • WCF:Per-Call 和 Per-Session 服务...需要说服 Per-Call 是值得的

    我们目前正在审查 WCF 服务设计 困扰我的一件事是 Per Call 和 Per Session 服务之间的决定 我相信我理解两者背后的概念 但我并没有真正看到按呼叫服务的优势 我知道使用 Per Call 服务的动机是 WCF 服务仅在
  • 给 NSWindow 一个背景图片

    好的 我已经在 Photoshop 中创建了一个图像 该图像将与我的应用程序上的按钮对齐 现在我想将其作为窗口的背景图像 以便图像上的字符将对应于我的应用程序上的按键应用程序 我一直在开发的一个小型计算器演示应用程序 基本上 我没有给按钮提
  • 多线程:只有在执行完其他方法后才调用执行方法

    我正在尝试根据要求异步处理方法 一旦第一个方法完成 只有第二个方法应该开始执行 问题是第一个方法本身具有在后台线程上运行的代码 我尝试了dispatch semaphore wait 但这也不起作用 dispatch queue t que