Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios dispatch_once如何只运行一次?_Ios_Objective C - Fatal编程技术网

Ios dispatch_once如何只运行一次?

Ios dispatch_once如何只运行一次?,ios,objective-c,Ios,Objective C,我曾经对共享实例使用过dispatch_一次,但我不明白dispatch_一次是如何工作的,为什么它只运行一次 dispatch_once()是同步过程,所有GCD方法都是异步执行的(例如,dispatch_sync()是同步的) dispatch_once()的整个思想是“只执行一次”,这正是我们正在做的 dispatch_once,用于保证某件事情只发生一次,无论程序的线程变得多么激烈 低级计算答案 当一个线程已经在关键部分中时,尝试访问关键部分的不同线程(一次传递给dispatch_的代

我曾经对共享实例使用过dispatch_一次,但我不明白dispatch_一次是如何工作的,为什么它只运行一次

dispatch_once()是同步过程,所有GCD方法都是异步执行的(例如,dispatch_sync()是同步的)

dispatch_once()的整个思想是“只执行一次”,这正是我们正在做的

dispatch_once,用于保证某件事情只发生一次,无论程序的线程变得多么激烈


低级计算答案

当一个线程已经在关键部分中时,尝试访问关键部分的不同线程(一次传递给dispatch_的代码)将被阻止,直到关键部分完成

只能有一个


应该注意的是,这只会使对共享实例的访问变得线程安全。它不一定使类线程安全。

请检查我的答案这是对dispatch_once()及其功能的回答。没有关于“它如何只运行一次”的信息