线程同步/安全主要有两个办法进行控制原子性。
1:NSCondition 对象
2:NSLock 对象
这两种锁的使用方法一样。
while (TRUE) { [lock lock]; //[_ticketCondition lock]; if (numberOfTickets > 0) { [NSThread sleepForTimeInterval:0.1]; scaleOfTickets++; numberOfTickets--; NSString *thread = [[NSThread currentThread]name]; NSLog(@"当前票数%d,已售票数%d,总票数%d,当前线程:%@",numberOfTickets,scaleOfTickets,numberOfTickets +scaleOfTickets,thread); }else { [self.buttonStart setHidden:NO]; UIActionSheet *sheet = [[UIActionSheet alloc]initWithTitle:@"票已售完" delegate:nil cancelButtonTitle:@"知道啦" destructiveButtonTitle:@"ok" otherButtonTitles:nil, nil]; [sheet showInView:self.view]; [sheet release]; break; } [self performSelectorOnMainThread:@selector(updateView:) withObject:[[NSThread currentThread]name] waitUntilDone:YES]; [lock unlock]; // [_ticketCondition unlock]; }