
我在windows(windows 7,XP和Vista)上。 如果我创build了一个multithreading程序,线程是否会在所有可用的内核上执行? 它是自动的吗? 有保证吗?
例如,如果我有四个线程和四个处理器,每个处理器/内核上的线程是否会执行一个?
如何在ROM中加载一个程序?
antexec – 不能运行程序“开始”CreateProcess错误= 2
在启动的应用程序closures之前,batch file不允许交互
在linux上创buildPHP在线评分系统:exec行为,进程ID和grep
为什么不是close_on_exec的默认configuration?
他们可能。 这取决于正在运行的其他程序是否也可以利用各种核心,直到 *** 作系统。
简而言之, *** 作系统应该尽可能均匀地分配线程,但是试图预测每个线程在每个核心上的放置方式和时间是无用的。
*** 作系统将根据线程状态,优先级等来决定
不保证线程将全部运行在不同的处理器上。 事实上,关于线程执行顺序的保证非常少。 他们可能都运行在同一个处理器上。 它们可能全部并行运行,或者可能不运行。 不是这可能,但你没有任何保证。
有关多处理器的 Msdn解释了如何强制特定处理器上的特定线程。 你通常依靠 *** 作系统。
您可以使用GetSystemInfo查询处理器的数量。
您可能有兴趣知道您可以使用SetThreadAffinityMask()函数来控制哪些线程可以在哪些内核上运行。
但是,在几乎所有情况下,最好让 *** 作系统管理线程分配给内核。 只有在非常特殊的情况下(例如,如果运行的高性能代码会受到上下文切换和高速缓存刷新的不利影响),您是否需要手动设置线程亲和性。
默认情况下,您创建的所有线程都可以在所有cpu的所有内核上执行。 但是,由于您的线程不是计算机中的唯一线程,因此这些内核在您的线程中不可用。 因此,调度程序将为您的线程提供可扩展的cpu功能。
由于你的线程可以在任何地方运行,所以当你的线程正在等待另一个内核变得可用时,你永远不会遇到内核无所事事的情况。 如果在4核心机器上有4个可运行的线程,这意味着所有的核心将会很忙。 注意:线程并不总是可运行的,例如,如果它正在等待I / O。
总结以上是内存溢出为你收集整理的在Windows上的多个处理器上如何执行线程?全部内容,希望文章能够帮你解决在Windows上的多个处理器上如何执行线程?所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)