代码之家  ›  专栏  ›  技术社区  ›  zoul

同步生产者、消费者和生产者队列

  •  0
  • zoul  · 技术社区  · 15 年前

    NSConditionalLock ,但对于队列,问题看起来更复杂。

    2 回复  |  直到 15 年前
        1
  •  1
  •   Peter Hosey    15 年前

    您可以考虑使用一对NSOperationQueues或分派队列。让生产操作(在生产者队列中)在主线程上(如果需要)向向消费者队列添加消费操作的对象发送消息。

        2
  •  0
  •   zoul    15 年前

    objectsReady bufferFreeSlots :

    @implementation Producer
    
    - (id) getNextObject {
        [objectsReady wait];
        id anObject = [[buffer objectAtIndex:0] retain];
        [buffer removeObjectAtIndex:0];
        [bufferFreeSlots signal];
        return [anObject autorelease];
    }
    
    - (void) decodeLoop {
        while (1) {
            [bufferFreeSlots wait];
            [buffer push:[self produceAnObject]];
            [objectsReady signal];
        }
    }
    
    @end
    

    这个 已初始化为最大队列大小。到目前为止,这似乎是可行的,但上帝知道这是一种信仰行为,而不是一种坚定的信心。