/** 线程加锁会造成系统系能消耗 我们要根据实际的需求合理使用锁,但是不能滥用
* 买票
*
* @param name <#name description#>
*/
- (void)buyTicket:(NSString *)name
{
while (1)
{
#if 0
//对象锁
@synchronized(self)
{
//有票
if (sum > 0)
{
//线程休眠
sleep(1);
sum--;
count++;
NSLog(@"总票数:%d 卖出:%d",sum,count);
}
else
{
break;
}
}
#endif
//加锁
[_lock lock];
//有票
if (sum > 0)
{
//线程休眠
sleep(1);
sum--;
count++;
NSLog(@"总票数:%d 卖出:%d",sum,count);
}
else
{
break;
}
//解锁
[_lock unlock];
}
#if 0
//回调主线程
[self performSelectorOnMainThread:<#(SEL)#> withObject:<#(id)#> waitUntilDone:<#(BOOL)#> modes:<#(NSArray *)#>];
dispatch_async(dispatch_get_main_queue(), ^{
<#code#>
})
#endif
}
多线程-经典买票问题
最新推荐文章于 2024-04-16 10:42:36 发布