一、继续前面导入
#import"GCD.h"
- (void)createGDCSemaphore
{
//create GCDSemaphore
GCDSemaphore *semaphore = [[GCDSemaphore alloc]init];
//线程1 - 异步
[GCDQueue executeInGlobalQueue:^{
NSLog(@"线程1");
}];
//线程2 - 异步
[GCDQueue executeInGlobalQueue:^{
NSLog(@"线程2");
}];
}
二、加入信号量时
- (void)createGDCSemaphore
{
//create GCDSemaphore
GCDSemaphore *semaphore = [[GCDSemaphore alloc]init];
//线程1-异步
[GCDQueueexecuteInGlobalQueue:^{
NSLog(@"线程1");
//发送信号
[semaphore signal];
}];
//线程2 -异步
[GCDQueueexecuteInGlobalQueue:^{
NSLog(@"线程2");
//等待信号
[semaphore wait];
}];
}
1.没有加信息号时.可能是线程1 先执行,后执行线程2 ,执行的次序不确定
2.加入信息号时,必须只有先执行完线程1,才能执行线程2
四、总结:
信号里可以将异步线程转成同步线程