线程问题

Joh*_*oer 0 c# multithreading

可能重复:
在.NET中创建阻塞队列<T>?

我有典型的生产者和消费者线程问题.但是唯一的区别是允许生产者建立一个包含5个项目的缓冲区,之后它必须等到一些项目被消耗掉.

在c#中实现这一点的最佳解决方案是什么.目前我使用信号量实现它,但生产者似乎非常迅速地建立了超过100个项目的缓冲区.我没有语法来处理将缓冲区限制为5个项目.我正在考虑使用一个静态整数 - 让生产者增加它 - 当它达到5时,生产者进入睡眠状态.让消费者减少它并唤醒生产者.

Ale*_*ler 5

为什么不使用有界队列(大小为5)并且如果队列已满,则让生产者阻塞?