最开始的 生产 - 消费 模式

生产者如果直接调用消费者的某个方法,有一个弊端。由于函数调用是同步的(或者叫阻塞的),在消费者的方法没有返回之前,生产者只好一直等在那边。万一消费者处理数据很慢,生产者就会浪费掉时间。

使用了生产者/消费者模式之后,生产者和消费者可以是两个独立的并发主体(常见并发类型有进程和线程两种)。生产者把制造出来的数据往缓冲区一丢,就可以再去生产下一个数据。基本上不用依赖消费者的处理速度。

生产者 - 消费者模式

生产者 - 消费者模式(Producer-Consumer Pattern)是一种经典的多线程 / 多进程设计模式,用于解耦 “生产数据” 和 “消费数据” 的过程,通过引入一个 缓冲区(队列) 作为中间层,使生产者和消费者无需直接交互,从而实现异步解耦、支持并发处理。

生产者线程_1  ──> 缓冲区(队列) ──> 消费者线程_1
生产者线程_2  ──>               ──> 消费者线程_2
...          ──>               ──> ...

想要让软件更自适应的话,可以将 缓冲区(队列) 替换成阻塞队列。

阻塞队列的定义

阻塞队列是一种支持阻塞操作的队列,当队列满时,尝试向队列中添加元素的线程会被阻塞,直到队列中有空间;当队列为空时,尝试从队列中移除元素的线程也会被阻塞,直到队列中有元素可供移除。

阻塞队列是怎么实现的?

阻塞队列的底层实现依赖于不同的编程语言和操作系统,不过通常会运用 条件变量或者信号量 等同步机制来达成线程安全与阻塞操作。

TODO...

posted on 2025-04-22 15:07  Mysticbinary  阅读(56)  评论(0)    收藏  举报