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 
         
 |  
        
        //创建串行队列 
         var 
          serial: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 
  
 |