用同步串行队列,控制想要执行的任务挨个执行
#import "dispatchQueueVC.h"
@interface dispatchQueueVC ()
@property (strong, nonatomic) dispatch_queue_t ticketQueue;
@property (strong, nonatomic) dispatch_queue_t moneyQueue;
@end
@implementation dispatchQueueVC
- (void)viewDidLoad {
[super viewDidLoad];
self.ticketQueue = dispatch_queue_create("ticketQueue", DISPATCH_QUEUE_SERIAL);
self.moneyQueue = dispatch_queue_create("moneyQueue", DISPATCH_QUEUE_SERIAL);
[self concurrentMoney];
[self concurrentSaleTicket];
}
- (void)__saveMoney {
dispatch_async(self.ticketQueue, ^{
[super saveMoney];
});
}
- (void)__drawMoney {
dispatch_async(self.ticketQueue, ^{
[super drawMoney];
});
}
- (void)__saleTicket {
dispatch_async(self.moneyQueue, ^{
[super saleTicket];
});
}
- (void)concurrentMoney {
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, ^{
for (int i = 0; i < 10; i++) {
[self __saveMoney];
}
});
dispatch_async(queue, ^{
for (int i = 0; i < 10; i++) {
[self __drawMoney];
}
});
}
- (void)concurrentSaleTicket {
dispatch_queue_t queue = dispatch_get_global_queue(0, 0);
dispatch_async(queue, ^{
for (int i = 0; i < 5; i++) {
[self __saleTicket];
}
});
dispatch_async(queue, ^{
for (int i = 0; i < 5; i++) {
[self __saleTicket];
}
});
}
@end