我有一些它检索服务器列表数据的线程。服务器列表每5分钟从服务器解析器下载。我的线程处理数据应该只使用响应时间最短的服务器。每个服务器的响应时间可能与请求请求的显着不同。因此,在更新服务器列表之间的时间范围内,我应该验证每个服务器的响应时间。并发收集优先
我最初的做法是创建两个额外的线程:首先更新服务器列表,第二次从每个服务器验证的响应时间和排序根据它们的响应时间服务器的列表。
我试图使用BlockingCollection,它被设计为连接生产者和消费者,但在我的任务中,我有两个并发使用者,并且BlockingCollection也没有本地能力插入项目以创建服务器的优先级列表。
ConcurrentStack或ConcurrentQueue也不能按原样使用,因为它们像BlockingCollection一样是非阻塞的,它们需要额外的机制来阻塞需要来自队列的线程的线程。
请帮我解决这个任务
感谢
保持简单开始。完全将您的收藏夹与另一个类包装在一起。不要允许其他代码直接与集合进行交互。在包装类中,使用基本的'lock'块来控制排序/添加/读取。编辑:当阅读整个集合,随时锁定和创建集合的_copy_返回给调用者,如果有必要。 –
我正以这种方式工作,但如果可能的话,我想倾听替代方法。无论如何,谢谢。 –