zoukankan      html  css  js  c++  java
  • 关于信号量以及多线程的代码

    #define MAX_CONCURRENT_COUNT 8
    
    static dispatch_semaphore_t WXDisplayConcurrentSemaphore;
    
    @implementation WXDisplayQueue
    
    + (dispatch_queue_t)displayQueue
    {
        static dispatch_queue_t displayQueue = NULL;
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            displayQueue = dispatch_queue_create("com.taobao.weex.displayQueue", DISPATCH_QUEUE_CONCURRENT);
            dispatch_set_target_queue(displayQueue, dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0));
        });
        
        return displayQueue;
    }
    
    + (void)addBlock:(void(^)())block
    {
        static dispatch_once_t onceToken;
        dispatch_once(&onceToken, ^{
            NSUInteger processorCount = [NSProcessInfo processInfo].activeProcessorCount;
            NSUInteger maxConcurrentCount = processorCount <= MAX_CONCURRENT_COUNT ? processorCount : MAX_CONCURRENT_COUNT;
            WXDisplayConcurrentSemaphore = dispatch_semaphore_create(maxConcurrentCount);
        });
        
        dispatch_async([self displayQueue], ^{
            dispatch_semaphore_wait(WXDisplayConcurrentSemaphore, DISPATCH_TIME_FOREVER);
            block();
            dispatch_semaphore_signal(WXDisplayConcurrentSemaphore);
        });
    }
    
    @end
    

      

  • 相关阅读:
    优化MySchool数据库(存储过程)
    优化MySchool数据库(事务、视图、索引)
    优化MySchool数据库(四)
    优化MySchool数据库(三)
    SQLAchemy
    python操作mysql
    python队列
    零碎知识
    super深究
    Python操作RabbitMQ
  • 原文地址:https://www.cnblogs.com/wxm5558/p/semphore.html
Copyright © 2011-2022 走看看