Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #import "ViewController.h"
- @interface ViewController ()
- @property (strong, nonatomic) dispatch_queue_t queue;
- @end
- @implementation ViewController
- - (void)viewDidLoad {
- [super viewDidLoad];
- _queue = dispatch_queue_create("queue", NULL);
- // [self withBarrier];
- // [self withDispatchGroup];
- // [self withSemaphore];
- [self withCondition];
- // [self withOperation];
- }
- - (id)withBarrier {
- dispatch_async(_queue, ^{
- [NSThread sleepForTimeInterval:2];
- NSLog(@"async block");
- });
- dispatch_barrier_sync(_queue, ^{
- NSLog(@"barrier");
- });
- NSLog(@"return value");
- return nil;
- }
- - (id)withDispatchGroup {
- dispatch_group_t group = dispatch_group_create();
- dispatch_group_async(group,dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^ {
- [NSThread sleepForTimeInterval:2];
- NSLog(@"async block");
- });
- dispatch_group_wait(group,DISPATCH_TIME_FOREVER);
- NSLog(@"return value");
- return nil;
- }
- - (id)withSemaphore {
- dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
- dispatch_async(_queue, ^{
- [NSThread sleepForTimeInterval:2];
- NSLog(@"async block");
- dispatch_semaphore_signal(semaphore);
- });
- dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
- NSLog(@"return value");
- return nil;
- }
- - (id)withCondition {
- NSCondition * locker = [[NSCondition alloc]init];
- [locker lock];
- dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
- [NSThread sleepForTimeInterval:2];
- NSLog(@"completion block");
- [locker signal];
- });
- [locker wait];
- [locker unlock];
- NSLog(@"return value");
- return nil;
- }
- - (id)withOperation {
- NSOperationQueue *queue = [[NSOperationQueue alloc] init];
- NSBlockOperation* theOperationBlock = [NSBlockOperation blockOperationWithBlock: ^{
- NSLog(@"operation block");
- }];
- [queue addOperation:theOperationBlock];
- [queue waitUntilAllOperationsAreFinished];
- NSLog(@"return value");
- return nil;
- }
- @end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement