ghi*_*boz 2 c++ multithreading thread-safety visual-c++
我有一个问题......我需要构建一个app多线程,我的问题是:如果我有一个2cpu处理器,我的2个线程是自动分开处理器吗?如果我有4个线程并且我的电脑有4cpu,那么每个处理器还有1个吗?如果我有4个处理器和2个cpu,怎么分?
提前致谢
除非您至少指定操作系统,否则这不是一个可以回答的问题.
C++本身对线程一无所知,它们是操作系统提供给执行环境的服务,并依赖于该操作系统的实现.
作为一般观察,我非常肯定Linux会独立调度线程,以便多个线程可以分布在不同的CPU和/或内核上.我怀疑Windows会做同样的事情.
某些操作系统将允许您指定线程亲和性,线程(有时是线程组)能够坚持使用单个CPU,但同样,这是一个操作系统问题,而不是C++问题.
对于Windows(根据您的评论),您可能需要阅读此介绍.Windows提供了一种SetProcessAffinityMask()
功能,用于控制给定进程中所有线程的亲缘关系或SetThreadAffinityMask()
独立控制线程.
但是,通常情况下,你会发现最好不要让它们单独运行并让操作系统对其进行排序 - 除非你对不同的行为有特定需求,否则操作系统几乎肯定会做出正确的决定.
归档时间: |
|
查看次数: |
257 次 |
最近记录: |