在Windows上,你可以为进程调用SetProcessAffinityMask函数,并为线程调用SetThreadAffinityMask函数。然而,Windows似乎仅公开了GetProcessAffinityMask而没有类似的API来处理进程中的单个线程。
我有一个多线程程序,在运行时将各个线程绑定到处理器。当我运行它时,我想(从外部)查询哪些线程在哪些处理器上运行,以确保它正常工作。我写了一个小型命令行实用程序来完成这个任务。但我似乎找不到一种方法来查找单个线程绑定的处理器或核心。
显然这是可能的;我在网上看到过adplus调试实用工具能够显示类似于pstack输出的线程亲和力信息。而且,在多处理器机器上,Process Explorer显示了一个“Threads”选项卡,显示了线程的“理想处理器”。
有人知道如何查询这个信息吗?
我有一个多线程程序,在运行时将各个线程绑定到处理器。当我运行它时,我想(从外部)查询哪些线程在哪些处理器上运行,以确保它正常工作。我写了一个小型命令行实用程序来完成这个任务。但我似乎找不到一种方法来查找单个线程绑定的处理器或核心。
显然这是可能的;我在网上看到过adplus调试实用工具能够显示类似于pstack输出的线程亲和力信息。而且,在多处理器机器上,Process Explorer显示了一个“Threads”选项卡,显示了线程的“理想处理器”。
有人知道如何查询这个信息吗?