判断代码在哪个队列中运行

- (void)viewDidLoad {
    [super viewDidLoad];
    
    NSLog(@"%d", [self isMainQueue]);       // 1
    
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0), ^{
        NSLog(@"%d", [self isMainQueue]);   // 0
    });
}

- (BOOL)isMainQueue {
    return strcmp(dispatch_queue_get_label(DISPATCH_CURRENT_QUEUE_LABEL), dispatch_queue_get_label(dispatch_get_main_queue())) == 0;
}

主队列的label是com.apple.main-thread。当然也可以用这种方式来判断其它队列。全局队列的label与其QOS类型相关,label值主要有以下几个:

com.apple.root.user-interactive-qos //
com.apple.root.user-initiated-qos   // DISPATCH_QUEUE_PRIORITY_HIGH
com.apple.root.default-qos          // DISPATCH_QUEUE_PRIORITY_DEFAULT
com.apple.root.utility-qos          // DISPATCH_QUEUE_PRIORITY_LOW
com.apple.root.background-qos       // DISPATCH_QUEUE_PRIORITY_BACKGROUND

我们可以使用dispatch_get_global_queue(qos_class_self(), 0)来获取代码所在的的全局队列,进而获取其label值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值