多线程-经典买票问题

来源:互联网 发布:源码授权是什么 编辑:程序博客网 时间:2024/05/16 02:28
/** 线程加锁会造成系统系能消耗 我们要根据实际的需求合理使用锁,但是不能滥用 *  买票 * *  @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}

0 0
原创粉丝点击