前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >NSCondition模拟买票的过程的简单实现

NSCondition模拟买票的过程的简单实现

原创
作者头像
大师级码师
修改2021-11-01 09:55:30
1910
修改2021-11-01 09:55:30
举报
文章被收录于专栏:大师级码师大师级码师
代码语言:javascript
复制
@interface ViewController ()
@property (nonatomic, strong) NSMutableArray * array;
@property (nonatomic, strong) NSCondition * condition;
@property (nonatomic, strong) NSTimer * timer;
@end
@implementation ViewController
//初始化

(NSMutableArray *)array

{

if (!_array) {

    _array = [NSMutableArray array];

}

return _array;


}

(NSCondition *)condition

{

if (!_condition) {

    _condition = [[NSCondition alloc] init];

}

return  _condition;


}
//加载

(void)viewDidLoad {
[super viewDidLoad];



//购买

for (int i = 0; i<3; i++)

{

    [self performSelectorInBackground:@selector(_consumer) withObject:nil];

}



//生产

self.timer = [NSTimer scheduledTimerWithTimeInterval:2 target:self selector:@selector(_productor) userInfo:nil repeats:YES];




}

(void)_productor

{

[self.condition lock];



if (self.array.count != 0)

{

    NSLog(@"结束");

    [self.timer invalidate];

    self.timer = nil;

}

else

{

    [self.array addObject:@"aaa"];

    NSLog(@"生产完成!");

    [self.condition signal];

}



[self.condition unlock];






}

(void)_consumer

{

[self.condition lock];



if (self.array.count <= 0)

{

    NSLog(@"正在等待!");

    [self.condition wait];

}



[self.array removeLastObject];

NSLog(@"购买成功!");



[self.condition unlock];


}
@end
</pre> 

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档