首页 > 其他 > 详细

GCD应用

时间:2015-11-23 13:29:44      阅读:389      评论:0      收藏:0      [点我收藏+]

技术分享

 1 //
 2 //  ViewController.m
 3 //  GCDdemo
 4 //
 5 //  Created by ys on 15/11/23.
 6 //  Copyright (c) 2015年 ys. All rights reserved.
 7 //
 8 
 9 #import "ViewController.h"
10 
11 @interface ViewController ()
12 
13 @end
14 
15 @implementation ViewController
16 /**
17  
18  GCD的任务
19  
20  1> disptach_sync       没有创建线程的欲望,就在当前线程执行
21  最主要的目的,阻塞并行队列任务的执行,只有当前的同步任务执行完毕后,后续的任务才能够执行
22  应用场景:用户登录!
23  
24  2> dispatch_async      有创建线程的欲望,但是创建多少条线程,取决与队列的类型
25  
26  GCD的队列
27  
28  1> 串行队列              类似于跑步,只有一条跑道
29  如果存在异步任务,就会在新线程中执行异步任务,而同步任务依旧在当前线程中执行
30  
31  2> 并行队列              类似与赛跑,具体跑道的数量,由系统决定
32  */
33 
34 - (void)viewDidLoad
35 {
36     [super viewDidLoad];
37     
38     [self demo];
39 }
40 
41 - (void)demo
42 {
43     dispatch_queue_t q = dispatch_queue_create("demo", DISPATCH_QUEUE_CONCURRENT);
44     
45     // 在新线程中工作
46     dispatch_async(q, ^{
47         // 2
48         NSLog(@"%@", [NSThread currentThread]);
49         
50         __block BOOL userLogon = NO;
51         
52         // 用户登录,用户输入用户名,密码之后,提交到服务器确认身份
53         // 应用场景1:用来阻塞必须要按照顺序执行的任务
54         dispatch_sync(q, ^{
55             // 2
56             NSLog(@"用户网络登陆 %@", [NSThread currentThread]);
57             
58             [NSThread sleepForTimeInterval:3.0f];
59             
60             userLogon = YES;//or NO
61         });
62         
63         // 身份确认之前,不能做其他事情
64         dispatch_async(q, ^{
65             // 可能是3,也可能是2
66             // 3.0(对的) / 立马执行(不对的)
67             NSLog(@"后续处理 %@", [NSThread currentThread]);
68             
69             if (userLogon) {
70                 NSLog(@"welcome");
71             } else {
72                 NSLog(@"why");
73             }
74         });
75         
76         // 队列是先进先出FIFO的,队列中的任务都是串着的
77     });
78 }
79 
80 
81 @end

 

GCD应用

原文:http://www.cnblogs.com/yangshun-work/p/4988057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!