c ++线程划分为微处理器

ghi*_*boz 2 c++ multithreading thread-safety visual-c++

我有一个问题......我需要构建一个app多线程,我的问题是:如果我有一个2cpu处理器,我的2个线程是自动分开处理器吗?如果我有4个线程并且我的电脑有4cpu,那么每个处理器还有1个吗?如果我有4个处理器和2个cpu,怎么分?

提前致谢

pax*_*blo 7

除非您至少指定操作系统,否则这不是一个可以回答的问题.

C++本身对线程一无所知,它们是操作系统提供给执行环境的服务,并依赖于该操作系统的实现.

作为一般观察,我非常肯定Linux会独立调度线程,以便多个线程可以分布在不同的CPU和/或内核上.我怀疑Windows会做同样的事情.

某些操作系统将允许您指定线程亲和性,线程(有时是线程组)能够坚持使用单个CPU,但同样,这是一个操作系统问题,而不是C++问题.

对于Windows(根据您的评论),您可能需要阅读此介绍.Windows提供了一种SetProcessAffinityMask()功能,用于控制给定进程中所有线程的亲缘关系或SetThreadAffinityMask()独立控制线程.

但是,通常情况下,你会发现最好不要让它们单独运行并让操作系统对其进行排序 - 除非你对不同的行为有特定需求,否则操作系统几乎肯定会做出正确的决定.