gpt4 book ai didi

multithreading - 带单核处理器的多线程代码和带多核处理器的单线程代码

转载 作者:行者123 更新时间:2023-12-03 12:52:01 26 4
gpt4 key购买 nike

我是多线程编程的新手。我一直在阅读一些文章,但是有两点我不确定。

  • 如果我有一个单线程代码(顺序的),并且在多核处理器上运行它。操作系统是否会尝试将线程划分为多个线程(同时照顾相关性)以利用多核处理器?
  • 如果我有多线程代码,并且在单核处理器上运行它。操作系统是否会在不同线程之间进行分时(与多个进程相同)?
  • 最佳答案

    1)否

    例如,如果某个应用程序利用了英特尔数学库并且已使用正确的开关进行了编译,则FFT之类的例程将在运行时拆分为与计算机内核数量匹配的单独线程。您的源代码仍然是“单线程”,但是该库正在背后创建和销毁线程。

    类似地,某些编译器(例如Intel的icc,Sun的C编译器)可能会将某些循环转换为单独的线程,每个循环负责一部分迭代。同样,源代码看起来是单线程的,但是编译器会代您生成线程代码。这有点像自动将一些OpenMP应用于源代码。

    操作系统无法再猜测应用程序将要做什么,因此它们无法像这样进行干预。库和编译器知道将要发生的事情,因此可以。

    已经开发了类似的库和编译器技巧,以使程序员可以轻松地从“单个”线程代码中提取更高的性能。大约在他们开始转向多核CPU的同时,英特尔便开始在其数学库中添加类似的功能。这个想法是(从程序员的角度)创建更好的“单”线程性能的印象,而速度实际上是由多个内核提供的。当他们开始制造多处理器计算机时,与Sun相似。

    随着每个人或多或少都放弃对单核性能的重大改进,这是前进的唯一方法。

    2)是的。还能怎么做?

    关于multithreading - 带单核处理器的多线程代码和带多核处理器的单线程代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35823875/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com