gpt4 book ai didi

c# - 多个线程并发访问队列

转载 作者:太空狗 更新时间:2023-10-29 22:20:00 38 4
gpt4 key购买 nike

我正在创建一个包含 NetTcpBinding 服务和 BasicHttpBinding 服务的应用程序。通过这些服务,客户端向应用程序发送请求:这些请求必须放入一个Queue对象,即入站请求队列。

  1. 这两种服务都必须允许来自客户端的并发调用。
  2. 这意味着两个服务应该同时访问队列以添加接收到的请求。
  3. 此外,另一个线程必须访问队列才能获取和处理请求。

我可以使用 ConcurrencyMode.Multiple 并且可以同时进行如此多的调用。但是,这并不能保证对队列的并发访问。我应该将两个 ServiceHost 放在两个不同的线程中吗?例如:

  • 第一个线程出列并处理队列中的请求。
  • 第二个线程实例化 NetTcpBinding 服务并将新请求放入队列中。此外,它通过回调发送任何回复。
  • 第三个线程实例化 BasicHttpBinding 服务并将新请求入队。

这是我的想法。由于我几乎是新手,如果您能给我一些建议,我将不胜感激。也许我应该开始编写并发访问队列的三个线程:目前,前两个线程可能将随机请求放入队列,而第三个线程使用这些请求。

最佳答案

如果您使用的是 .NET 4,则应查看 ConcurrentQueue<T>BlockingCollection .

基本上,这些是线程安全的集合,它们是为高性能而实现的,并且大多是无锁的。

BlockingCollection专门针对您所描述的生产者-消费者场景实现。

引用:

关于c# - 多个线程并发访问队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9165620/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com