线程同步/安全主要有两个办法进行控制原子性。
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];
}
本文详细介绍了线程同步/安全控制中的两种主要方法:NSCondition对象与NSLock对象,通过实例展示了如何使用这些对象确保多线程环境下的数据一致性。
2501

被折叠的 条评论
为什么被折叠?



