//
// ViewController.m
// 1124GCD多线程同步异步函数和并发串行队列
//
// Created by weibiao on 15/11/24.
// Copyright © 2015年 weibiao. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
[selfsyncGlobalQueue];
// [self asyncGlobalQueue];
// [self asyncSerialQueue];
// [self syncSerialQueue];
}
// 异步函数,执行串行队列,只会创建一条线程
/**
* 会创建1条线程
*/
- (void)asyncSerialQueue {
dispatch_queue_t queue =dispatch_queue_create("WBO",NULL);
dispatch_async(queue, ^{
NSLog(@"下载图片A----%@",[NSThreadcurrentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片B----%@",[NSThreadcurrentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片C----%@",[NSThreadcurrentThread]);
});
}
// 异步函数,执行并发队列,会创建多条队列
/**
* 会创建3条线程
*/
- (void)asyncGlobalQueue {
dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_async(queue, ^{
NSLog(@"下载图片A----%@",[NSThreadcurrentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片B----%@",[NSThreadcurrentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片C----%@",[NSThreadcurrentThread]);
});
}
// 同步函数,执行串行队列,不会创建线程,在主线程中执行操作
/**
* 不会创建新的线程
*/
- (void)syncSerialQueue {
dispatch_queue_t queue =dispatch_queue_create("WB",NULL);
dispatch_sync(queue, ^{
NSLog(@"下载图片A----%@",[NSThreadcurrentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片B----%@",[NSThreadcurrentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片C----%@",[NSThreadcurrentThread]);
});
}
// 同步函数,执行并发队列,不会创建队列
/**
* 不会创建新的线程
*/
- (void)syncGlobalQueue {
dispatch_queue_t queue =dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0);
dispatch_sync(queue, ^{
NSLog(@"下载图片A----%@",[NSThreadcurrentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片B----%@",[NSThreadcurrentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片C----%@",[NSThreadcurrentThread]);
});
}
/**
* 同步函数没有开线程的能力
*/
@end