---恢复内容开始---
直接上代码
一,异步函数往并发队列中添加任务
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_async(queue, ^{
NSLog(@"下载图片。。。%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片2.。。%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片3.。。%@",[NSThread currentThread]);
});
NSLog(@"主线程。。。%@",[NSThread mainThread]);
二,异步函数往串行队列中添加任务
NSLog(@"%@",[NSThread mainThread]);
dispatch_queue_t queue = dispatch_queue_create("dusunan", NULL);
dispatch_async(queue, ^{
NSLog(@"下载图片1----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片2----%@",[NSThread currentThread]);
});
dispatch_async(queue, ^{
NSLog(@"下载图片3----%@",[NSThread currentThread]);
});
此种方法会开启线程,但是只会开启一个线程
三,用异步函数往并发队列中添加任务
dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
dispatch_sync(queue, ^{
NSLog(@"下载图片1 %@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片2 %@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片3 %@",[NSThread currentThread]);
});
四,同步函数往串行队列中添加任务
dispatch_queue_t queue = dispatch_queue_create("dusunan", NULL);
dispatch_sync(queue, ^{
NSLog(@"下载图片1 %@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片2 %@",[NSThread currentThread]);
});
dispatch_sync(queue, ^{
NSLog(@"下载图片3 %@",[NSThread currentThread]);
});
五,应用
(1)一次性代码
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
18 {
19 if (_log==NO) {
20 NSLog(@"该行代码只执行一次");
21 _log=YES;
22 }
23 }
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
26 {
27 static dispatch_once_t onceToken;
28 dispatch_once(&onceToken, ^{
29 NSLog(@"该行代码只执行一次");
30 });
31 }
下面的代码可以取代上面的代码块原文:http://www.cnblogs.com/adodo/p/5193421.html