标签: c++ multithreading winapi caching cpu
为了优化L1 / L2缓存的性能,我想确保每个线程仅在其自己的逻辑内核上运行。 我看过SetProcessAffinityMask(),对于内核少于64个的CPU,我可以将掩码1LL<<i分配给线程i。
SetProcessAffinityMask()
1LL<<i
i
但是,使用64个以上的CPU内核会使事情变得非常复杂。有人可以简单地解释一下如何将每个线程分配给自己的CPU内核,而可以有多个CPU总共有64个以上的内核,或者单个CPU可以有多个内核。 96个逻辑核心?