GCD,@synchronized 实现生产者-消费者模型
来源:互联网 发布:马自达 mx5 rf 知乎 编辑:程序博客网 时间:2024/06/06 09:16
//
// ViewController.m
// Test
//
// Created by 小白 on 2016/12/10.
// Copyright © 2016年 LinJian. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@property (nonatomic,strong) NSMutableArray * arrM;
@end
@implementation ViewController
- (void)viewDidLoad {
[superviewDidLoad];
// Do any additional setup after loading the view, typically from a nib.
_arrM = [NSMutableArrayarray];
[selfproducerFunc];
[selfproducerFunc];
[selfconsumerFunc];
}
- (void)producerFunc{
dispatch_queue_t queue =dispatch_get_global_queue(0,0);
dispatch_async(queue, ^{
while (1) {
if (_arrM.count ==10) {
NSLog(@"库存已满,等待消费中");
}else{
@synchronized (self) {
NSLog(@"添加商品中");
sleep(1);
[_arrMaddObject:@"商品"];
NSLog(@"添加完毕,当前商品数:%ld",_arrM.count);
}
}
sleep(5);
}
});
}
- (void)consumerFunc{
dispatch_queue_t queue =dispatch_get_global_queue(0,0);
dispatch_async(queue, ^{
while (1) {
if (_arrM.count ==0) {
NSLog(@"库存已空,等待添加库存");
}else{
@synchronized (self) {
NSLog(@"消耗商品中");
sleep(1);
[_arrMremoveObjectAtIndex:0];
NSLog(@"商品消耗完毕,当前商品数:%ld",_arrM.count);
}
}
sleep(5);
}
});
}
- (void)didReceiveMemoryWarning {
[superdidReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
@end
- GCD,@synchronized 实现生产者-消费者模型
- 生产者-消费者模型实现
- synchronized 实现生产者消费者问题
- 简单实现生产者、消费者模型
- java实现生产者消费者模型
- 生产者消费者模型的实现
- LinkedBlockingQueue 实现生产者消费者模型
- OpenMP实现生产者消费者模型
- Java实现生产者-消费者模型
- IOS 生产者-消费者模型实现
- Java---实现生产者消费者模型
- TransferQueue实现生产者、消费者模型
- 队列实现生产者消费者模型
- Java实现生产者消费者模型
- pthread-消费者/生产者模型实现
- Linux实现生产者消费者模型
- 用链表实现生产者消费者模型
- 生产者消费者模型的实现
- Spring中Aspect的切入点语法定义细节
- 十五周—统计字符串长度
- java中局部变量和全局变量
- 如何在html页面联入css样式
- 道德经全文用字分析
- GCD,@synchronized 实现生产者-消费者模型
- git 初步使用 -- 提交代码
- 10014---CentOS6.5下kafka+ZooKeeper下载与安装详细教程-多机版本1
- VS2012 Error:不存在从“——”到“——*”的适当转换函数—已解决
- Mac OS X 上的ldd和strace的替代
- Mybatis 示例之 foreach
- 会场安排问题
- 在Eclipse上安装BuildShip Gradle插件,并创建Java Web项目
- 最优合并问题