让我们想象一组数据源,即一对热传感器或摄像机。我想从奴隶中的这些来源收集数据并传递给主人。
效率是运营的关键方面。
我应该使用多个进程还是线程/任务?
编辑:我忘了提......所有数据源都应该同步服务,同样具有相同的优先级,同时,无论 CPU 和内存使用情况以及可用内核数量如何。
如果您要从多个从属设备传递给一个主设备,请使用线程。这将帮助您共享地址空间,并可能使任务更易于实施。如果您有很多从属服务器并希望获得最高效率,请使用线程池来服务从属服务器源。
使用多个进程只会增加进程上下文切换开销,这通常比线程上下文切换略多。您还必须管理进程间通信,这通常比线程间通信更复杂且效率更低。
这样做的典型方法是使用读写器锁( .NET 中的ReaderWriterLockSlim)。您的编写者将排队等待对您的共享状态映射的一次一次写入访问,而您的读者(例如您的客户端应用程序)可以同时读取,但显然不是在生产者写入状态时.
编辑:这显然是在使用线程。进程间通信会扼杀您可能拥有的任何体面性能的希望。