iOS有三種多線程技術
1.NSThread
優點:輕量級
缺點:需要自己管理線程的聲明週期, 線程同步.線程同步對數據的加鎖有一定的系統開銷
2.NSOperation
優點: 不需要關心線程管理, 數據同步的事情, 可以把經理放在自己需要執行的操作上.相關的類是NSOperation, NSOperationQueue
NSOperation是個抽象類, 使用它必須用它的子類, 可以實現它定義好的兩個類:NSInvocationOperation 和 NSBlockOperation
創建NSOperation子類的對象, 把對象添加到NSOperationQueue隊列裏執行
3,GCD
- The main queue(主線程串行隊列): 與主線程功能相同,提交至Main queue的任務會在主線程中執行,
- Main queue 可以通過dispatch_get_main_queue()來獲取。
- Global queue(全局併發隊列): 全局併發隊列由整個進程共享,有高、中(默認)、低、後臺四個優先級別。
- Global queue 可以通過調用dispatch_get_global_queue函數來獲取(可以設置優先級)
- Custom queue (自定義隊列): 可以爲串行,也可以爲併發。
- Custom queue 可以通過dispatch_queue_create()來獲取;
- Group queue (隊列組):將多線程進行分組,最大的好處是可獲知所有線程的完成情況。
- Group queue 可以通過調用dispatch_group_create()來獲取,通過dispatch_group_notify,可以直接監聽組裏所有線程完成情況。