块生产者直到消费者完成(反向BlockingCollection)

时间:2018-06-06 18:03:20

标签: c# asp.net .net producer-consumer

我想要一个多生产者 - 单一消费者模式,其中生产者等待消费者完成。

那么为什么不调用消费者方法?

因为它是一个多线程环境,我需要消费者逐个处理项目。我想避免手动放置锁(因为那里可能存在陷阱)并使用类似精彩的BlockingCollection。Take()方法阻止消费者直到产生更多的项目,但我也需要它反过来:

消费者应该等待生产,生产者应该等待消费者完成。

我如何实现这一目标?

修改

项目需要逐个处理。但它们来自对Web服务的请求,可能是并发的。所以我有所有服务请求将项目发送给一个消费者。但是,在处理项目之前,请求不应发送响应,因为Web应用程序可能在处理项目之前被回收(并且响应表示"项目已被处理")。但是当请求尚未响应时,Asp.net会尝试不回收应用程序(AFAIK)。

0 个答案:

没有答案