我正在编写一个连接到单个套接字的服务,然后读取连续且有时很多的数据.我收到的数据应该交给另一个线程(在服务中)进行处理,原因是处理可能需要一段时间,我不想阻止接收套接字.
我打算使用Begin或Async接收方法来处理数据,而不是让线程运行读取并发队列或其他东西.我需要这个扩展到可能通过套接字的大量数据.有什么建议?
我不确定使用异步接收如何帮助处理.据我所知,你将有一个连接到套接字的线程并读取连续的数据流.我假设线程可以将连续流分解为某种记录,或者至少是可管理大小的块.然后,您必须将该数据提供给一个或多个处理线程.
我强烈建议你使用并发队列(实际上是a BlockingCollection)在读取数据的线程和将要进行处理的线程之间进行通信.我建议使用以下几个原因BlockingCollection:
你的是一个非常典型的生产者/消费者应用程序.生产者(读取套接字的线程)获取数据,将其放入队列,然后一个或多个消费者(处理线程)可以读取和处理数据.我不能想到在.NET中使用更简单,更有效或更有效的方法而不是使用BlockingCollection.
| 归档时间: |
|
| 查看次数: |
969 次 |
| 最近记录: |