dispatch_barrier_async一些用法

来源:互联网 发布:安庆网络问政平台2017 编辑:程序博客网 时间:2024/05/21 11:28
- (NSDictionary *)HTTPRequestHeaders {    NSDictionary __block *value;    dispatch_sync(self.requestHeaderModificationQueue, ^{        value = [NSDictionary dictionaryWithDictionary:self.mutableHTTPRequestHeaders];    });    return value;}- (void)setValue:(NSString *)valueforHTTPHeaderField:(NSString *)field{    dispatch_barrier_async(self.requestHeaderModificationQueue, ^{        [self.mutableHTTPRequestHeaders setValue:value forKey:field];    });}- (NSString *)valueForHTTPHeaderField:(NSString *)field {    NSString __block *value;    dispatch_sync(self.requestHeaderModificationQueue, ^{        value = [self.mutableHTTPRequestHeaders valueForKey:field];    });    return value;}


1、在AFNetworking中,dispatch_barrier_async用来保证写线程的安全性,;以上面self.mutableHTTPRequestHeader 为例,通过<span style="font-family: Arial, Helvetica, sans-serif;">dispatch_barrier_async,能保证每次写</span><span style="font-family: Arial, Helvetica, sans-serif;">self.mutableHTTPRequestHeader时,没有线程在读</span><span style="font-family: Arial, Helvetica, sans-serif;">self.mutableHTTPRequestHeader;同时,写入</span><span style="font-family: Arial, Helvetica, sans-serif;">self.mutableHTTPRequestHeader时是在子线程中写的</span>
<span style="font-family: Arial, Helvetica, sans-serif;"></span>
<span style="font-family:Arial, Helvetica, sans-serif;">2、</span><span style="font-family: Arial, Helvetica, sans-serif;">self.requestHeaderModificationQueue是一个并发队列,</span><span style="font-family: Arial, Helvetica, sans-serif;">dispatch_sync(self.requestHeaderModificationQueue, 实现多线程读取同一个变量,又能保证同步获取到数据</span>




0 0
原创粉丝点击