1,Swift继续使用Object-C原有的一套线程,包括三种多线程编程技术: 
  
(1)NSThread
(2)Cocoa NSOperation(NSOperation和NSOperationQueue)
(3)Grand Central Dispath(GCD)
2,本文着重介绍Grand Central Dispath(GCD)
 
   
 
   
    
    
 
   
  
(2)获取系统存在的全局队列 
    
    
          1 
         
       
                    
                    
                (1)NSThread
(2)Cocoa NSOperation(NSOperation和NSOperationQueue)
(3)Grand Central Dispath(GCD)
2,本文着重介绍Grand Central Dispath(GCD)
    GCD是Apple开发的一个多核编程的解决方法,基本概念就是dispatch queue(调度队列),queue是一个对象,它可以接受任务,并将任务以先到先执行的顺序来执行。dispatch queue可以是并发的或串行的。GCD的底层依然是用线程实现,不过我们可以不用关注实现的细节。其优点有如下几点: 
  
 
  
    (1)易用:GCD比thread更简单易用。基于block的特效使它能极为简单地在不同代码作用域之间传递上下文。 
  
 
  
    (2)效率:GCD实现功能轻量,优雅,使得它在很多地方比专门创建消耗资源的线程更加实用且快捷。 
  
 
  
    (3)性能:GCD自动根据系统负载来增减线程数量,从而减少了上下文切换并增加了计算效率。 
  
 
  
    (4)安全:无需加锁或其他同步机制。 
  
 
   
   3,GCD三种创建队列的方法 
  
 
   
   (1)自己创建一个队列 
  
 
  
    第一个参数代表队列的名称,可以任意起名 
  
 
  
    第二个参数代表队列属于串行还是并行执行任务 
  
 
  
    串行队列一次只执行一个任务。一般用于按顺序同步访问,但我们可以创建任意数量的串行队列,各个串行队列之间是并发的。 
  
 
  
    并行队列的执行顺序与其加入队列的顺序相同。可以并发执行多个任务,但是执行完成的顺序是随机的。 
  
 
  | 
          1 
         
          2 
         
          3 
         
          4 
         
          5 
         | //创建串行队列varserial:dispatch_queue_t = dispatch_queue_create("serialQueue1",DISPATCH_QUEUE_SERIAL)//创建并行队列 
          concurrent:dispatch_queue_t = dispatch_queue_create( 
           "concurrentQueue1"DISPATCH_QUEUE_CONCURRENT) | 
(2)获取系统存在的全局队列
    Global Dispatch Queue有4个执行优先级: 
  
 
  
    DISPATCH_QUEUE_PRIORITY_HIGH 高 
  
 
  
    DISPATCH_QUEUE_PRIORITY_DEFAULT 正常 
  
 
  
    DISPATCH_QUEUE_PRIORITY_LOW 低 
  
 
  
    DISPATCH_QUEUE_PRIORITY_BACKGROUND 非常低的优先级(这个优先级只用于不太关心完成时间的真正的后台任务) 
  
 
  | globalQueue:dispatch_queue_t = dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT 
  (3)运行在主线程的Main Dispatch Queue 
   |