美文网首页
CocoaLumberjack GCD 使用(2)

CocoaLumberjack GCD 使用(2)

作者: 老猫_2017 | 来源:发表于2020-01-21 10:41 被阅读0次
// get current label
_queueLabel = [[NSString alloc] initWithFormat:@"%s", dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL)];


// specific check is need queue
void *key = (__bridge void *)self;
        void *nonNullValue = (__bridge void *)self;

        dispatch_queue_set_specific(_loggerQueue, key, nonNullValue, NULL);



// create group
_loggingGroup = dispatch_group_create();

// add to group
for (DDLoggerNode *loggerNode in self._loggers) {
        ...
            dispatch_group_async(_loggingGroup, loggerNode->_loggerQueue, ^{ @autoreleasepool {
                ...
            } });
        }
// wait for excutor 等待执行
        dispatch_group_wait(_loggingGroup, DISPATCH_TIME_FOREVER);


// create semaphore 1000
+ (void)initialize {
    static dispatch_once_t DDLogOnceToken;

    dispatch_once(&DDLogOnceToken, ^{
        ...
        _queueSemaphore = dispatch_semaphore_create(DDLOG_MAX_QUEUE_SIZE);
                ...
    });
}

// enqueue  -1
dispatch_block_t logBlock = ^{
        dispatch_semaphore_wait(_queueSemaphore, DISPATCH_TIME_FOREVER);
        // We're now sure we won't overflow the queue.
        // It is time to queue our log message.
        @autoreleasepool {
            [self lt_log:logMessage];
        }
    };

// dequeue +1
- (void)lt_log:(DDLogMessage *)logMessage {
    ...
        dispatch_semaphore_signal(_queueSemaphore);
    ...
}

group 保证多任务,完成通知

semaphore 保证限制处理的资源数量,进行的数量控制

Dispatch_get_queue_label 获取当前队列的名称

dispatch_queue_set_specific 设置 特定值

相关文章

  • CocoaLumberjack GCD 使用(2)

    group 保证多任务,完成通知semaphore 保证限制处理的资源数量,进行的数量控制Dispatch_get...

  • CocoaLumberjack GCD 使用(1)

    并发读,单写 dispatch_barrier_async, dispatch_sync 并发读 source t...

  • iOS调试篇(一)——日志重定向篇

    1 CocoaLumberjack 使用开源第三方库CocoaLumberjack。 2 hook 使用fishh...

  • 全量日志

    1 CocoaLumberjack 使用开源第三方库CocoaLumberjack。 2 hook 使用fishh...

  • xcode Log 插件

    1. 安装XcodeColors插件 2、下载CocoaLumberjack开源框架 3、使用 #ifdef DE...

  • iOS - Log

    一、CocoaLumberjack 项目中的日志系统可以通过 CocoaLumberjack 实现,目前使用过 D...

  • GCD介绍

    一、GCD简单介绍 什么是GCD GCD优势 任务和队列 GCD有2个核心概念 GCD的使用就2个步骤 将任务添加...

  • 多线程之GCD

    GCD介绍 1、GCD简介 2、GCD任务和队列 3、GCD 的基本使用 4、GCD 线程间的通信 5、GCD 的...

  • CocoaLumberjack使用

    一 利用cocopods 安装CocoaLumberjack(2.2.0) 1.必须要定义 打印级别 DDLog ...

  • GCD多线程详解

    1. GCD 简介 2. GCD 任务和队列 3. GCD 的使用步骤 4. GCD 的基本使用(6种不同组合区别...

网友评论

      本文标题:CocoaLumberjack GCD 使用(2)

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