ios 单利2 dispatch 和同步锁 性能比较

作者: Dayu大鱼 | 来源:发表于2016-07-19 13:45 被阅读229次

创建单利的类:

#import "YQConfig.h"

@implementation YQConfig

+(instancetype)config{
    static YQConfig*instance;
    static dispatch_once_t onceToken;
    
    dispatch_once(&onceToken, ^{
        instance=[[YQConfig alloc]init];
    });
    
    return instance;
}


+(instancetype)configSync{
    
    static YQConfig*instance;
    @synchronized (self) {
        if (instance==nil) {
            instance=[[YQConfig alloc]init];
            
        }
    }
    
    
    return instance;
}

@end


ViewController.m中使用demo来测试两种方法性能的差别:

-(void)demo{

//disptach_once
double time1=CFAbsoluteTimeGetCurrent();

    for (int i=0; i<999*99; i++) {
        dispatch_async(dispatch_get_global_queue(0, 0), ^{
            
            YQConfig*config5=[YQConfig config];
           
        });
    }

double time2=CFAbsoluteTimeGetCurrent();

NSLog(@"dispatch: %f ",time2-time1 );






//同步锁
double time3=CFAbsoluteTimeGetCurrent();

for (int i=0; i<999*999; i++) {
    dispatch_async(dispatch_get_global_queue(0, 0), ^{
        
        YQConfig*config5=[YQConfig configSync];
        
    });
}

double time4=CFAbsoluteTimeGetCurrent();

NSLog(@"同步锁:%f ",time4-time3 );

}

运行结果:
2016-07-19 13:34:39.363 单例模式[1058:311069] dispatch: 0.186492 
2016-07-19 13:34:43.112 单例模式[1058:311069] 同步锁:3.745988 

从运行结果就可以看出,单利中使用dispatch 的方法时间比 同步锁@synchronized 性能多出数倍之多

开发中单利使用的平率很大

static dispatch_once_t onceToken;
dispatch_once(&onceToken,^{

});

相关文章

  • ios 单利2 dispatch 和同步锁 性能比较

    创建单利的类: ViewController.m中使用demo来测试两种方法性能的差别: -(void)demo{...

  • 线程同步

    1.dispatch_semaphore(信号量)的理解及使用2.iOS 多线程同步策略之-----锁NSLock...

  • iOS-锁

    iOS开发中知道的哪些锁? 哪个性能最差? 锁是线程编程同步工具的基础。iOS开发中常用的锁有如下几种: @syn...

  • iOS中的锁

    锁是一种同步机制,用于多线程环境中对资源访问的限制iOS中常见锁的性能对比图(摘自:ibireme): iOS锁的...

  • Lock

    iOS中保证线程安全的几种方式与性能对比 dispatch_queue_set_specific和dispatch...

  • dispatch queue.h

    版本:iOS13.5 queue.h dispatch其他文件通道 同步和异步的区别当运行到dispatch_as...

  • 起底多线程同步锁(iOS)

    起底多线程同步锁(iOS) 起底多线程同步锁(iOS)

  • 四十二、多线程之(六)线程安全--锁(读写锁)

    iOS中的读写安全方案 1.pthread_rwlock (线程读写锁) 2.dispatch_barrier_...

  • iOS都有哪些锁

    iOS都有哪些锁:synchronized 、atomic、oSSpinLook、NSLock、dispatch_...

  • iOS 线程(锁 lock)同步方案的性能比较

    性能从高到低排序os_unfair_lock iOS //10 之后才可以使用OSSpinLock // iOS1...

网友评论

    本文标题:ios 单利2 dispatch 和同步锁 性能比较

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