【发布时间】:2011-10-04 17:07:54
【问题描述】:
我可以在任何时候最多同时运行 5 个线程,这利用 5 个独立的硬件来加速一些复杂计算的计算并返回结果。每个硬件的 API(仅包含一种方法)都不是线程安全的,并且只能在任何时间点在单个线程上运行。计算完成后,可以重新使用相同的线程在相同或不同的硬件上启动另一个计算,具体取决于可用性。每个计算都是独立的,不依赖于其他计算的结果。因此,最多 5 个线程可以以任意顺序完成其执行。
什么是最有效的 C#(使用 .Net Framework 2.0)编码解决方案,用于跟踪哪些硬件是免费/可用的,并将线程分配给适当的硬件 API 以执行计算?请注意,除了 5 个并发运行线程的限制之外,我无法控制线程何时或如何被触发。
如果我错了,请纠正我,但首选无锁解决方案,因为我相信它会提高效率和更具可扩展性的解决方案。
还请注意,这不是家庭作业,虽然听起来很像……
【问题讨论】:
-
5 个独立的硬件是什么意思?您想分发超过 5 台机器吗?
-
我想象他有 5 个东西,比如板载协处理器设备。也许它们是特殊的硬件加密设备。无论如何 - 他们做一些计算密集型的事情,比如说。他们每个人一次只能做一件事。它们不是远程通用计算机,因此这不是分布式计算的问题。相反,它们是专用资源,由单个程序使用。
标签: c# .net multithreading performance api