GCD学习之dispatch_once

dispatch_once

       dispatch_once函数是保证在应用程序执行中只执行一次指定处理的API。下面这种经常出现的用来进行初始化的源代码可通过dispatch_once函数简化。

static int initialized = NOif(initialized == NO)
{
   //初始化
   initialized = YES;
}

       如果使用dispatch_once函数:

static dispatch_once_t pred;
dispatch_once(&pred,^{
   //初始化
});

       通过dispatch_once函数,该源代码即使在多线程环境下执行,也可保证百分之百安全。

       在多核CPU中,在正在更新表示是否初始化的标志变量时读取,就有可能多次执行初始化处理。而用dispatch_once函数初始化就不必担心这样的问题。这就是所说的单例模式,再生成单例对象时使用。

       GCD合集:

       GCD
       dispatch_set_target_queue
       dispatch_after
       Dispatch Group
       dispatch_barrier_async
       dispatch_sync
       dispatch_apply
       dispatch_suspend/dispatch_resume
       Dispatch Semaphore
       dispatch_once
       Dispatch I/O

你可能感兴趣的:(#,GCD多线程编程,iOS学习--从入门到实战)