下面是:2个并发进程、和2个并发线程的示意图:
下面介绍三种多线程技术(Thread、Cocoa Operation、Grand Central Dispatch):
1、最轻量级Thread(需要自己管理线程的生命周期和同步,所以不常用):线程同步对数据的加锁会导致一定的系统开销。但偶尔也会有一定的用处,如Thread.current可以获得当前线程,这种使用就很方便。
//下面是创建Thread的两种方法 //方法一:使用类方法,创建线程(创建好,就启动了) Thread.detachNewThreadSelector(#selector(addOne), toTarget: self, with: nil) //方法二:线程实例化,采用便利构造器 let thread2 = Thread(target: self, selector: #selector(addTwo), object: nil) thread2.start()
2、Cocoa Operation(相关类Operation和OperationQueue):这种方法就不需要关心线程管理和数据同步,只需把重点放在多线程分别要执行的任务。
let blockOne = BlockOperation(block: addOne) let blockTwo = BlockOperation(block: addTwo) let queue = OperationQueue() queue.addOperation(blockOne) queue.addOperation(blockTwo)
3、Grand Central Dispatch(GCD):
原文:http://www.cnblogs.com/quanxi/p/6240284.html