shareO: 非线程安全,因为如果两个线程同时访问,就不是创建一个了。
share1: 线程安全,加入了同步锁,线程安全,当时过程都是串行运行的的,并且同步锁消耗额外的资源;
share2: 线程安全,这个比share1性能搞了点,使用了两个if判断,但是代码复杂;
shared : 线程安全,最优的写法;
一个token和block代码块,这个函数必然会执行的,且线程安全;
常常: 对于只需要执行一次的块来说,每次调用函数时,传入的标记都必须完全相同。因此开发者通常标记变量声明在static 或者gloabal作用域;线程安全是由GCD底部完成的;
由于每次调用时,都必须使用完全相同的标记,所以标记要声明成static。这样在复用的时候都会用这个变量而不是新的;dispatch_once 这个方法不用加锁,函数采用了原子访问(atomic access)来查询标记,以判断其所对应的代码原来是否执行过。
ios 中单例的创建
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 2016年国庆假期终于把此书过完,整理笔记和体会于此。 关于书名 书名源于俄罗斯的演员斯坦尼斯拉夫斯基创作的《演员...