rjhzp143 5天前
如何在一个QT程序中process.start()分别指定cpu组0和cpu组1的各个CPU

在网上看到有大哥写的贴子,内容如下

---------------------------------------------------------------------

1.在多CPU分组环境下,一个进程默认只能在一个CPU分组里运行。至于分配到哪个分组,由系统决定,不固定分配。 2.一个进程只能绑定一个CPU分组, 线程则没有限制。意味着通过控制,可以让一个进程使用到多个CPU分组的资源。 3.进程设置CPU分组,取决于第一个线程所绑定的CPU分组, 如果要设置进程到某个CPU分组,则需要改变第一个线程的CPU分组,再设置进程affinitity。 4.当设置过线程group与进程group不同组以后, 任务管理器查看进程相关性就会不可用。 5.当设置过进程affinitity,而又设置了线程在同一个分组的进程affinitity以外的核心, 则之前设置的进程affinitity就会失效。 小弟正在用双路64核(2个CPU组,0和1)的机器执行任务,需要指定CPU的核来做不同的工作,

---------------------------------------------------------------------

小弟正在WIN10用双路128核(2个CPU组,0和1)的机器执行QT软件任务,需要指定CPU的核来做不同的工作,用SetProcessAffinityMask()这个函数可以指定0-63的任意CPU或组合CPU来运行我的process调用外部程序,经过观察发现此时的cpu分组随着我qt软件每次启动是随机的,也就是有时候是CPU-0组,有时候是CPU-1组,也就是上文中提到的第一点 “1.在多CPU分组环境下,一个进程默认只能在一个CPU分组里运行。至于分配到哪个分组,由系统决定,不固定分配。”

---------------------------------------------------------------------

我现在想实现的功能是 “1:通过我编写的QT程序,用process.start()同时运行16个外部软件。2:前8个调用将分别占用cpu0组的0-63的cpu。后8个调用分别占用cpu1组的0-63” 。要如何实现?如可以用SetThreadGroupAffinity要如何实现?多谢!!!!

...全文
156 点赞 收藏 4
写回复
4 条回复

还没有回复,快来抢沙发~

发动态
发帖子
Qt
创建于2009-11-04

1.0w+

社区成员

2.5w+

社区内容

Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区公告
暂无公告