OC高效率52之使用dispatch_once来执行只需运行一次的线程安全代码

#import "EOCClassShareInstance.h"

@implementation EOCClassShareInstance
/**
 *  一般创建单例方式
 */
+(id)shareInstance{
    static EOCClassShareInstance *shared = nil;
    @synchronized(self) {
        if (!shared){
            shared = [[EOCClassShareInstance alloc]init];
        }
    }
    return shared;
}
/**
 *  GCD线程安全模式
 */
+(id)sharedGCDInstance{
    static EOCClassShareInstance *sharedGCD = nil;
    static dispatch_once_t onceToken;//每次调用都必须使用相同的标记,所以要申明为static
    dispatch_once(&onceToken, ^{
        sharedGCD = [[self alloc]init];
    });
    return sharedGCD;
}

@end


你可能感兴趣的:(OC高效率52之使用dispatch_once来执行只需运行一次的线程安全代码)