美文网首页网络请求
dispatch_once的原理

dispatch_once的原理

作者: 袁小童缘 | 来源:发表于2016-11-05 10:25 被阅读91次

dispatch_once主要是根据onceToken的值来决定怎么去执行代码。

1.当onceToken= 0时,线程执行dispatch_onceblock中代码

2.当onceToken= -1时,线程跳过dispatch_onceblock中代码不执行

3.当onceToken为其他值时,线程被阻塞,等待onceToken值改变

当线程调用shareInstance,此时onceToken= 0,调用block中的代码,此时onceToken的值变为140734537148864。当其他线程再调用shareInstance方法时,onceToken的值已经是140734537148864了,线程阻塞。当block线程执行完block之后,onceToken变为-1.其他线程不再阻塞,跳过block。下次再调用shareInstance时,block已经为-1.直接跳过block

dispatch_once设计挺巧妙的。

相关文章

网友评论

    本文标题:dispatch_once的原理

    本文链接:https://www.haomeiwen.com/subject/bqbysttx.html