Windows,多个进程与多个线程
发布时间:2020-12-14 01:36:59 所属栏目:Windows 来源:网络整理
导读:我们必须使我们的系统具有高度可扩展性,并且它是使用VC为 Windows平台开发的.最初说,我们想同时处理100个请求(来自msmq).什么是最好的方法?单个过程有100个线程还是2个进程有50-50个线程?在第二种方法的情况下,除了过程存储器之外还有什么收益.在Windows中
我们必须使我们的系统具有高度可扩展性,并且它是使用VC为
Windows平台开发的.最初说,我们想同时处理100个请求(来自msmq).什么是最好的方法?单个过程有100个线程还是2个进程有50-50个线程?在第二种方法的情况下,除了过程存储器之外还有什么收益.在Windows中,首先将CPU时间分配给进程,然后在该进程的线程之间进行拆分,或者OS计算每个进程的线程数,并根据线程而不是进程来分配CPU.我们注意到,在第一种情况下,CPU利用率为15-25%,我们希望消耗更多的CPU.请记住,我们希望获得最佳性能,因此100个请求就是例如.我们还注意到,如果我们将进程的线程数增加到120以上,则由于上下文切换,性能会下降.
还有一点;我们的产品已经支持群集,但我们希望在单个节点上使用更多的CPU. 任何建议将受到高度赞赏. 解决方法
Windows上的标准方法是多线程.不是说这总是你最好的解决方案,但每个线程或进程都要付出代价,而在Windows上,进程更昂贵.至于调度程序,我不确定,但你可以设置进程和线程的priory.线程的真正好处是它们的共享地址空间和没有IPC的通信能力,但必须小心保持同步.
如果您已经开发了系统,它可能更容易实现多进程解决方案,尤其是如果有可能后者可以使用多台机器.由于您在一台机器上的2个进程的IPC可以扩展到一般情况下的多台机器.大规模并行化的大多数尝试都失败了,因为整个系统都没有针对瓶颈进行评估.例如,如果您实现了100个线程,这些线程都写入同一个数据库,您可能在实际性能上获得的收益很少,只需等待您的数据库. 只是我的.02 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |