Windows上多线程程序,能在不同的CPU上运作吗
Windows上多线程程序,能在不同的CPU上运行吗?
linux上,可以设置CPU亲和力,就是指定哪个线程在哪个CPU上运行.
Windows上好像就是开线程吧,不指定线程在哪个CPU上运行吧,那Windows自动分派的,还是一个进程,几个线程都在一个CPU上运行啊?
------解决方案--------------------
微软的线程亲和性,说的是,就算其他处理器核心有空闲, 系统内核也不对已设置好线程亲和性的线程进行调度.
而那个处理器核心可能由于正在执行繁忙工作(其他进程或核心组件).以至于会导致那个线程会执行的很慢.
按照微软的说法, 设置线程亲和性 未必会提升性能.
------解决方案--------------------
windows也可以设置CPU亲缘性
linux上,可以设置CPU亲和力,就是指定哪个线程在哪个CPU上运行.
Windows上好像就是开线程吧,不指定线程在哪个CPU上运行吧,那Windows自动分派的,还是一个进程,几个线程都在一个CPU上运行啊?
------解决方案--------------------
微软的线程亲和性,说的是,就算其他处理器核心有空闲, 系统内核也不对已设置好线程亲和性的线程进行调度.
而那个处理器核心可能由于正在执行繁忙工作(其他进程或核心组件).以至于会导致那个线程会执行的很慢.
按照微软的说法, 设置线程亲和性 未必会提升性能.
------解决方案--------------------
windows也可以设置CPU亲缘性
DWORD_PTR WINAPI SetThreadAffinityMask(
__in HANDLE hThread,
__in DWORD_PTR dwThreadAffinityMask
);
BOOL WINAPI SetProcessAffinityMask(
__in HANDLE hProcess,
__in DWORD_PTR dwProcessAffinityMask
);