8-3 player.c 的FrameQueue写得有问题,生产和消费Frame不对,不管生产直接消费?
来源:8-22 一个真正的播放器(三)

iStream
2024-07-04
1.在player.c 第281~284 没有管生产Frame ,直接一股脑的消费
static Frame *frame_queue_peek(FrameQueue *fq)
{
return &fq->queue[fq->rindex];
}
这个问题希望老师看一,看看我理解的对不对,
2.是不是还要加上这一个函数,生产和消费才对
static Frame *frame_queue_peek_readable(FrameQueue *f)
3.希望老在查一下8~3得代码,问题很多
写回答
1回答
-
没问题,消费线程只管消费,只要对列里有数据就拿出来消费。这是生产-消费的一种变形, 不是生产一个就要消费一个。你可以思考一个问题,如果生产者在生产产品,生产后通知了消费者,但消费者正在忙优先级更高的事儿,消费者当然可以不理生产者的消息,等它忙完了再去对列里取。另外对列是有长度限制的,当生产者生产到一定数量,对列满了也就停止了
032024-07-06
相似问题