生产者消费者

文章概要
生产者,消费者
如何使用信号量加锁
生产者,消费者
我对于生产者和消费者的理解是:需要有一个缓存池,生产者和消费者需要在不同的线程中去分别操作缓存池,这时候就特别容易产生并发问题。

下面讲解如何去写一个消费者和生产者

缓存池:其实需要一个可变的容器,所有在oc里面可变数组即可

//生产者消费者
   dispatch_semaphore_t semaphore = dispatch_semaphore_create(1);
   self.array = [[NSMutableArray alloc] init];
   dispatch_queue_t queue = dispatch_queue_create("cn.chutong.www", DISPATCH_QUEUE_CONCURRENT);
  //生产
   dispatch_async(queue, ^{
       while (YES) {
           int count = random()%10;
           sleep(1);
           dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
           [self.array addObject:[NSString stringWithFormat:@"%d",count]];
           dispatch_semaphore_signal(semaphore);
           NSLog(@"生产了%d",count);
       }
   });
   //消费
   dispatch_async(queue, ^{
       while (YES) {
       if (self.array.count>0) {
           NSLog(@"消费了%@",self.array.lastObject);
           dispatch_semaphore_wait(semaphore, DISPATCH_TIME_FOREVER);
           [self.array removeLastObject];
           dispatch_semaphore_signal(semaphore);
       }
           
       }
   });

生产与消费成对出现:

image.png
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容