```
? ? //dispatch_semaphore需要在異步線程中使用
? ? dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{
? ? ? ? //初始化信號量為0,當(dāng)信號量小于0時,線程會進入等待狀態(tài)
? ? ? ? dispatch_semaphore_t semaphore = dispatch_semaphore_create(0);
? ? ? ? for(NSIntegeri =0; i<10; i++){
? ? ? ? ? ? //開始執(zhí)行異步操作
? ? ? ? ? ? [http uploadDataWithCompleteBlock:^(id? _NullableaResponseObject, NSError *_NullableanError) {
? ? ? ? ? ? ? ? NSLog(@"++第%ld次",i);
? ? ? ? ? ? ? ? //異步結(jié)束之后,信號量加1,線程回復(fù)執(zhí)行
? ? ? ? ? ? ? ? dispatch_semaphore_signal(sem);
? ? ? ? ? ? }];
? ? ? ? ? ? //立即進入等待狀態(tài),信號量減一
? ? ? ? ? ? dispatch_semaphore_wait(sem,DISPATCH_TIME_FOREVER);
? ? ? ? }
? ? });
```