C++ 根据机器性能动态评估负载并创建线程
嗨,我已经开始从事一个项目,在这个项目中,我使用并行计算在多台机器之间分离作业负载,例如散列和其他形式的数学计算。我在用C++ 如果您希望每个客户机都连接到服务器并等待作业,那么它将在主/从或服务器/客户机模型上运行。服务器可以接受一个作业并根据客户端的数量将其分离C++ 根据机器性能动态评估负载并创建线程,c++,multithreading,distributed-computing,C++,Multithreading,Distributed Computing,嗨,我已经开始从事一个项目,在这个项目中,我使用并行计算在多台机器之间分离作业负载,例如散列和其他形式的数学计算。我在用C++ 如果您希望每个客户机都连接到服务器并等待作业,那么它将在主/从或服务器/客户机模型上运行。服务器可以接受一个作业并根据客户端的数量将其分离 1000 jobs -- > 3 clients IE: client 1 --> calculate(0 to 333) Client 2 --> calculate(334 to 666)
1000 jobs -- > 3 clients
IE: client 1 --> calculate(0 to 333)
Client 2 --> calculate(334 to 666)
Client 3 --> calculate(667 to 999)
我希望通过在每个正在运行的客户机上创建多个线程来进一步提高速度。但是,由于不可能(几乎100%)每台机器都没有相同的硬件,我不能任意决定在每个客户机上运行多少线程
我想知道你们中是否有人知道一种方法来评估线程在cpu上的负载,并推断出可以在机器上并发运行的线程数
我认为有很多方法可以做到这一点
欢迎提出任何想法或建议,提前感谢 任务是否依赖于以前的任务输出或完成?好问题-为什么不将CPU推到100%?-您可以降低优先级。根据机器的不同,我可能会在这台机器上做其他事情,因此可能我不想使用这台机器上的所有cpu电源,例如,在客户端上实现真正的并发性
NumberOfThreadOnClient=NumberOfCoreOnClient
。除非线程执行的工作是I/O
,否则任何超出此范围的操作都必须等待。另外,请指定什么样的工作是预期由线程完成。