iOS异步方法、同步实现

作者: 半生飘零 | 来源:发表于2019-10-15 11:47 被阅读0次

1、GCD实现

-  (int)syncGetCountWithDispatchGroup

{

// _block 修饰才能在block块里面更改值

    __block int count = 0;

    dispatch_group_t  group = dispatch_group_create();

    dispatch_group_enter(group);

// 异步方法

    [self  AsyncGetCount:^(NSInteger value) {

        count = value;

        dispatch_group_leave(group);

    }];

    dispatch_group_wait(group, DISPATCH_TIME_FOREVER);

// 利用线程组阻塞、必须调用异步取值才能走下一步

    return count;

}

-  (void)moreNetLoadWithDispatchGroup

{

    dispatch_group_t  group = dispatch_group_create();

    dispatch_group_enter(group);

// 异步网络方法1

    [self  AsyncLoadrequest1:^(NetModel *value) {

        dispatch_group_leave(group);

    }];

// 异步网络方法2

dispatch_group_enter(group);

[self  AsyncLoadrequest2:^(NetModel *value) {

dispatch_group_leave(group);

    }];

//  必须两个任务走完才能走下一步

    dispatch_group_notify(group, dispatch_get_main_queue(), ^{

                // 最后的操作

    });

}

2、信号量实现

- (int)syncGetCountWithSemaphore

{

    __block int  count = 0;

    dispatch_semaphore_t sema = dispatch_semaphore_create(0);

    [self AsyncGetCount:^(NSInteger value) {

        count = value;

        dispatch_semaphore_signal(sema);

    }];

    dispatch_semaphore_wait(sema, DISPATCH_TIME_FOREVER);

    return result;

}

相关文章

  • iOS异步方法、同步实现

    1、GCD实现 - (int)syncGetCountWithDispatchGroup { // _block ...

  • iOS 多线程基础

    转自:iOS 多线程基础 - 简书 多线程同步和异步的区别?IOS中如何实现多线程的同步? 异步:可以同时执行多条...

  • iOS 文件存取的 API 选择

    同步还是异步?异步方法:Cocoa Streams, GCD, Dispatch I/O Channel同步方法:...

  • 多线程-相关概念

    一.同步(Synchronous)和异步(Asynchronous) 同步和异步通常用来形容一次方法调用,同步方法...

  • Dart 同步、异步、队列

    异步 Dart中的异步看起来像是同步 dart中使用 async方法和await 表达式实现异步 要使用await...

  • iOS-14 线程基础

    参考 ios的线程和同步异步操作 - 简书线程 同步异步 Timer 等使用 本文主要从 1、 ios三种创建方式...

  • 【前端】interview时碰到的js手写题

    *多个实现异步的方法 Promise.all(iterable)实现,同步执行完所有参数里的promise任务,再...

  • 异步的处理

    异步方法中可以套异步方法,达到同步的目的。

  • iOS_2016最新版面试题(附答案)

    每天四道题,让精彩填满生活... 1、多线程同步和异步的区别。iOS如何实现多线程的同步? 答:同步就是指一个线程...

  • 并发编程基础

    几个基本概念 同步&异步同步(Synchronous)同步方法一旦调用必须等待方法调用返回后才会继续后续行动异步(...

网友评论

    本文标题:iOS异步方法、同步实现

    本文链接:https://www.haomeiwen.com/subject/uhajmctx.html