最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

iOS中多線程的入門使用教程(Swift)

 更新時間:2021年11月28日 11:12:25   作者:閩江小張  
這篇文章主要給大家介紹了關(guān)于iOS中多線程入門使用的相關(guān)資料,一個進程中可以開啟多條線程,每條線程可以并行執(zhí)行不同的任務(wù),本文通過示例代碼介紹的非常詳細,需要的朋友可以參考下

一、iOS的三種多線程技術(shù)

1、NSThread

–優(yōu)點:NSThread 比其他兩個輕量級,使用簡單

–缺點:需要自己管理線程的生命周期、線程同步、加鎖、睡眠以及喚醒等。線程同步對數(shù)據(jù)的加鎖會有一定的系統(tǒng)開銷

2、NSOperation

不需要關(guān)心線程管理,數(shù)據(jù)同步的事情,可以把精力放在自己需要執(zhí)行的操作上

3、GCD

基于C語言的

二、基本使用

NSThread的基本使用

方式一:

//        block
        let thread =  Thread.init {
                print("1、----this is thread \(Thread.current) ")
        }
        thread.start()

方式二:

//        SEL
        let thread2 = Thread.init(target: self, selector: #selector(text), object: nil)
        thread2.start()
        
    @objc func text(){
        print("2、----this is thread \(Thread.current) ")
    }

方式三:\

 self.performSelector(inBackground: #selector(text2), with: nil)

輸出

請?zhí)砑訄D片描述

tips:可以給任意一個線程增加延遲看看

   print(thread.isCancelled)//是否取消
   print(thread.isExecuting)//是否在執(zhí)行
   print(thread.isFinished)//是否完成
   print(thread.isMainThread)//是否是主線程

NSOperation的基本使用

方式一:

      let queue = OperationQueue.init()
//     最大線程數(shù)
        queue.maxConcurrentOperationCount = 2
        queue.addOperation {
            sleep(1)
            print("1111")
        }
        queue.addOperation {
            print("2222")
        }

輸出結(jié)果如下:

方式二:可設(shè)置優(yōu)先級

        let queue = OperationQueue.init()
      	let op =  BlockOperation.init {
            print("op")
        }
        op.queuePriority = .normal //設(shè)置優(yōu)先級
        queue.addOperation(op)
        let op2 = BlockOperation.init {
            print("op2")
        }
        op2.queuePriority = .normal
        queue.addOperation(op2)
        
        queue.addOperation {
            print("op3")
        }

略作修改

        let queue = OperationQueue.init()
        let op =  BlockOperation.init {
            sleep(1)
            print("op")
        }
        op.queuePriority = .normal //設(shè)置優(yōu)先級
        queue.addOperation(op)
        let op2 = BlockOperation.init {
            sleep(1)
            print("op2")
        }
        op2.queuePriority = .veryHigh
        queue.addOperation(op2)
        
        queue.addOperation {
            print("op3")
        }

輸出如下:

優(yōu)先級如下:

GCD的基本使用

方式一:queue.async 異步

   let queue =   DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent)
        for i in 0...15 {
            queue.async {
                sleep(1)
                print("this is \(Thread.current) \(i)")
            }
        }

方式二:queue.sync 同步

  let queue =   DispatchQueue.init(label: "com.zjb.concurrent",attributes: .concurrent)
        for i in 0...15 {
            queue.sync {
                sleep(1)
                print("this is \(Thread.current) \(i)")
            }
        }
        

附加網(wǎng)絡(luò)上一段代碼

        for i in 1...10 {
               DispatchQueue.global(qos: DispatchQoS.QoSClass.default).async {
                   NSLog("DispatchQoS.QoSClass.default, %d", i)
               }
                    
               DispatchQueue.global(qos: DispatchQoS.QoSClass.background).async {
                   NSLog("DispatchQoS.QoSClass.background, %d", i)
               }
                    
               DispatchQueue.global(qos: DispatchQoS.QoSClass.unspecified).async {
                   NSLog("DispatchQoS.QoSClass.unspecified, %d", i)
               }
                    
               DispatchQueue.global(qos: DispatchQoS.QoSClass.userInitiated).async {
                   NSLog("DispatchQoS.QoSClass.userInitiated, %d", i)
               }
                    
               DispatchQueue.global(qos: DispatchQoS.QoSClass.userInteractive).async {
                   NSLog("DispatchQoS.QoSClass.userInteractive, %d", i)
               }
                    
               DispatchQueue.global(qos: DispatchQoS.QoSClass.utility).async {
                   NSLog("DispatchQoS.QoSClass.utility, %d", i)
               }
        }

優(yōu)先級userInteractive最高、background最低

總結(jié)

到此這篇關(guān)于iOS中多線程入門使用的文章就介紹到這了,更多相關(guān)iOS多線程使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • iOS UIScrollView滾動視圖/無限循環(huán)滾動/自動滾動的實例代碼

    iOS UIScrollView滾動視圖/無限循環(huán)滾動/自動滾動的實例代碼

    這篇文章主要介紹了iOS UIScrollView滾動視圖/無限循環(huán)滾動/自動滾動,需要的朋友可以參考下
    2017-02-02
  • IOS 開發(fā)中畫扇形圖實例詳解

    IOS 開發(fā)中畫扇形圖實例詳解

    這篇文章主要介紹了IOS 開發(fā)中畫扇形圖實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-04-04
  • IOS簡單實現(xiàn)瀑布流UICollectionView

    IOS簡單實現(xiàn)瀑布流UICollectionView

    這篇文章主要為大家介紹了IOS簡單實現(xiàn)瀑布流UICollectionView的相關(guān)資料,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-01-01
  • iOS貝塞爾曲線畫哆啦A夢的代碼實例

    iOS貝塞爾曲線畫哆啦A夢的代碼實例

    本篇文章主要介紹了iOS貝塞爾曲線畫哆啦A夢的代碼實例,這里整理了詳細的代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-07-07
  • iOS讀寫json文件的方法示例

    iOS讀寫json文件的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS讀寫json文件的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-01-01
  • iOS實現(xiàn)列表與網(wǎng)格兩種視圖的相互切換

    iOS實現(xiàn)列表與網(wǎng)格兩種視圖的相互切換

    相信大家應(yīng)該也都發(fā)現(xiàn)了,在現(xiàn)在很多的電商app中,都會有列表視圖和網(wǎng)格兩種視圖的相互切換。例如京東和淘寶。這樣更利于提高用戶的體驗度,所以這篇文章小編就是大家分享下利用iOS實現(xiàn)列表與網(wǎng)格兩種視圖相互切換的方法,文中介紹的很詳細,感興趣的下面來一起看看吧。
    2016-10-10
  • iOS 捕獲程序崩潰日志

    iOS 捕獲程序崩潰日志

    我們常常會遇到iPhone手機或者iPad平板上運行APP崩潰的問題,有時候打開某個APP,卻一下子“閃退”了。對于開發(fā)者來說,這個絕對是頭疼的問題。那么如何獲取到iOS設(shè)備崩潰日志呢?這個提供一些簡單的方法,共開發(fā)者與用戶溝通使用。
    2015-06-06
  • iOS實現(xiàn)獲取系統(tǒng)iTunes音樂的方法示例

    iOS實現(xiàn)獲取系統(tǒng)iTunes音樂的方法示例

    這篇文章主要給大家介紹了關(guān)于iOS如何實現(xiàn)獲取系統(tǒng)iTunes音樂的相關(guān)資料,文中通過示例代碼給大家詳細介紹了實現(xiàn)的方法,并給大家介紹了MPMediaPickerController的相關(guān)知識,對大家的學習或者工作具有一定的幫助,需要的朋友們下面隨著小編來一起學習學習吧。
    2017-11-11
  • 淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying

    淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying

    下面小編就為大家分享一篇淺談iOS中幾個常用協(xié)議 NSCopying/NSMutableCopying,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Swift 去除 TableView 多余的空Cell中的橫線的方法

    Swift 去除 TableView 多余的空Cell中的橫線的方法

    這篇文章主要介紹了Swift 去除 TableView 多余的空Cell中的橫線的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-02-02

最新評論

承德市| 大丰市| 平乐县| 韩城市| 张家港市| 中卫市| 宁强县| 博湖县| 鲁甸县| 新津县| 公安县| 德令哈市| 扬州市| 元江| 怀柔区| 邢台市| 临清市| 汨罗市| 绍兴市| 南丰县| 呼图壁县| 林甸县| 个旧市| 托克逊县| 和硕县| 长垣县| 广东省| 鄂尔多斯市| 黄梅县| 英山县| 招远市| 浠水县| 渝北区| 永胜县| 奈曼旗| 赤壁市| 来宾市| 肥东县| 洛阳市| 五家渠市| 临泉县|