首页 > 代码库 > GCD 实现生产-消费 模式
GCD 实现生产-消费 模式
#import "ViewController.h"@interface ViewController (){ }@property (nonatomic,strong) dispatch_semaphore_t sema;@end@implementation ViewController- (void)viewDidLoad{ [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. _sema = dispatch_semaphore_create(1); dispatch_group_t group = dispatch_group_create(); dispatch_queue_t queue = dispatch_queue_create("custom_dis", 0); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (![[NSThread currentThread] isMainThread]) { NSLog(@"===异步线程==============="); } for (int i = 0; i<10; i++) { dispatch_semaphore_wait(_sema, DISPATCH_TIME_FOREVER); dispatch_group_async(group, queue, ^{ if (![[NSThread currentThread] isMainThread]) { NSLog(@"===异步线程==============="); } [self doCustomSomting]; }); } }); dispatch_group_wait(group, DISPATCH_TIME_FOREVER);}-(void)doCustomSomting{ sleep(2); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ if (![[NSThread currentThread] isMainThread]) { NSLog(@"===异步线程==============="); } sleep(1); dispatch_async(dispatch_get_main_queue(), ^{ if ([[NSThread currentThread] isMainThread]) { NSLog(@"===主线程==============="); } NSLog(@"=====compeletSomting========="); dispatch_semaphore_signal(_sema); }); }); }- (void)didReceiveMemoryWarning{ [super didReceiveMemoryWarning]; // Dispose of any resources that can be recreated.}@end
GCD 实现生产-消费 模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。