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

本文关键字:数据 线程 进程 任务 | 更新日期: 2023-09-27 18:32:46

让我们想象几个数据源的集合,即几个热传感器或摄像机。我想从从属中的这些来源收集数据并传递给主服务器。

效率是运营的关键方面。

我应该使用多个进程还是线程/任务?

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

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

如果要从多个从站传递到一个主站,请使用线程。这将帮助您共享地址空间,并可能使任务更易于实现。如果您有非常多的从站并且想要最高的效率,请使用线程池为从属源提供服务。

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

执行此操作的典型方法是使用读取器编写器锁(.NET 中的 ReaderWriterLockSlim)。您的编写器将排队等待对共享状态图的一次一个写入访问权限,而您的读取器(例如您的客户端应用程序)可以同时一起读取,尽管显然不是在生成者写入状态时。

编辑:这显然是在使用线程。进程间通信会扼杀您可能拥有的任何体面性能的希望。