使用多个进程/线程/任务从多个源收集数据

时间:2012-05-01 18:39:48

标签: c# .net windows

让我们想象一组数据源,即几对热传感器或摄像机。我想从奴隶中的那些来源收集数据并传递给主人。

效率是该行动的关键方面。

我应该使用多个进程或线程/任务吗?

编辑:我忘了提及......无论CPU和内存使用情况以及可用内核数量如何,所有数据源都应同时提供,同样具有相同的优先级

2 个答案:

答案 0 :(得分:1)

如果您从多个从属服务器传递给主服务器,请使用线程。这将有助于您共享地址空间,并可能使任务更容易实现。如果您有很多从站并希望获得最高效率,请使用线程池来维护从属源。

使用多个进程只会增加进程上下文切换开销,这通常略高于线程上下文切换的开销。您还必须管理进程间通信,这通常比线程通信更复杂,效率更低。

答案 1 :(得分:1)

这样做的典型方法是使用读写器锁(.NET中为ReaderWriterLockSlim)。您的编写者会排队一次一次写入您的共享状态映射,而您的读者(例如您的客户端应用程序)可以同时读取,但显然不是在生产者编写状态时

编辑:那显然是在使用线程。进程间的沟通会消除你可能拥有的体面表现的希望。

相关问题