//
// GCD-DispatchOnce-ViewController.swift
// iOS底層
//
// Created by yanqunchao on 2019/5/21.
// Copyright ? 2019 yanqunchao. All rights reserved.
//
import UIKit
class GCD_DispatchOnce_ViewController: UIViewController {
var onceToken :Int = 0
typealias dispatchBlockT = (()->())
typealias dispatchBlockInvoke = ((dispatchBlockT)->())
let semaphore = DispatchSemaphore(value: 1)
override func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = .white
for _ in 0..<4 {
DispatchQueue.global().async {
self._dispatchOnce(predicate: &self.onceToken) {
print("-------創(chuàng)建單利")
}
}
}
print(semaphore)
}
func _dispatchOnce(predicate:UnsafeMutablePointer<Int>?,block:dispatchBlockT) {
print("進(jìn)入函數(shù)------")
semaphore.wait()
print("鎖住線程-------\(Thread.current)")
if predicate!.pointee != -1 {
dispatch_once_f(predicate: predicate, ctxt: block, invokeFunc: _dispatch_Block_invoke)
} else {
print("開啟線程-------\(Thread.current)")
semaphore.signal()
}
}
func dispatch_once_f(predicate:UnsafeMutablePointer<Int>?,ctxt:dispatchBlockT,invokeFunc:@escaping dispatchBlockInvoke) {
invokeFunc(ctxt)
predicate!.pointee = -1
print("開啟線程-------\(Thread.current)")
semaphore.signal()
}
func _dispatch_Block_invoke(block:dispatchBlockT) {
block()
}
}
iOS原理之CGD-dispatch_once的底層實現(xiàn)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來海渊,“玉大人绵疲,你說我怎么就攤上這事哲鸳。” “怎么了盔憨?”我有些...
- 文/不壞的土叔 我叫張陵徙菠,是天一觀的道長。 經(jīng)常有香客問我郁岩,道長婿奔,這世上最難降的妖魔是什么? 我笑而不...
- 正文 為了忘掉前任问慎,我火速辦了婚禮萍摊,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘如叼。我一直安慰自己冰木,他們只是感情好,可當(dāng)我...
- 文/花漫 我一把揭開白布笼恰。 她就那樣靜靜地躺著踊沸,像睡著了一般。 火紅的嫁衣襯著肌膚如雪挖腰。 梳的紋絲不亂的頭發(fā)上雕沿,一...
- 文/蒼蘭香墨 我猛地睜開眼崖飘,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了杈女?” 一聲冷哼從身側(cè)響起朱浴,我...
- 正文 年R本政府宣布,位于F島的核電站施敢,受9級特大地震影響似炎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜悯姊,卻給世界環(huán)境...
- 文/蒙蒙 一羡藐、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧悯许,春花似錦仆嗦、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至垃僚,卻和暖如春集绰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谆棺。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 3.2.12 dispatch_once dispatch_once 函數(shù)是保證在應(yīng)用程序執(zhí)行中執(zhí)行一次指定處理的...
- 題記 作為iOS開發(fā)者,對category肯定不會陌生仰猖,category一般又叫分類捏肢,當(dāng)我們需要為一個類增加額外的...
- 不知道從什么時候開始,我開始愛感嘆時間怎么過的那么快盗温,似乎一天剛開始藕赞,轉(zhuǎn)眼就到了結(jié)束時。 2018年已經(jīng)過去了二分...
- 吳用批销,雖然綽號叫智多星,可他是小事小聰明染坯,大事大糊涂均芽。吳用的計謀,太過陰損单鹿,坑了不少人掀宋。 吳用出場是從智取生辰綱開...