|
1
1
似乎您有一个非常受I/O限制的系统(输入端的文件和输出端的DB)。我没有看到CPU密集型部件。 显而易见的优化已经存在:将大量传入的文件打包,并将每个设备的数据分组。成本是内存消耗和数据库更新的延迟。你需要参数。 作为第一个想法,我会把它设置在3个由有界队列连接的街区。这些队列将让任何“不堪重负”的组件限制其供应商。
块2:1个线程来组织和分组数据。决定设备数据何时应进入数据库 块3:1+线程将数据推送到数据库。 这些块给了这个系统一些灵活性。有限的队列允许您控制资源消耗。请注意,应该参数化块2以调整块大小。 |
|
|
2
0
dispatcher可以不断监视可用的系统内存和cpu使用情况(例如使用性能计数器api)。 只要有足够的空闲内存或足够低的cpu负载,就启动一个新线程。您必须进行一些测试,以找到应用程序的最佳阈值。 另外,如果您是在32位上运行,那么一个进程只能使用大约800mb的ram,然后才会出现内存不足异常,因此您可能也需要考虑到这一点。
程序流程如下:
|
|
|
user107586 · 如何处理等待句柄不会导致无限循环? 10 月前 |
|
|
ron burgundy · 获取-释放语义是否跨线程传递?[副本] 11 月前 |
|
|
BenjiFB · C#内存缓存:在一次操作中追加到列表? 11 月前 |
|
|
András Takács · Python多线程问题 1 年前 |
|
|
András Takács · Python多线程错误 1 年前 |