多線程:線程安全

1.單例模式

class Singleton: NSObject {

    

    class func shareSingle() -> Singleton {

        

        struct temps{

            static var instance: Singleton?

            static var myT: dispatch_once_t = 0

        }

        

//保證方法只能運行一次(臨界區)

        dispatch_once(&temps.myT, { () -> Void in

            temps.instance = Singleton()

        })

        

        return temps.instance!

    }

    

}


2.讀者寫者問題

//新建自定義線程

        var myQueue = dispatch_queue_create("snow.thread", DISPATCH_QUEUE_CONCURRENT)

        //阻塞其他線程,避免讀者寫者問題(必須使用自定義線程)

        dispatch_barrier_async(myQueue, { () -> Void in

            //數據操作,比如對數組添加數據

        })


發佈了53 篇原創文章 · 獲贊 2 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章