Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 我需要并行化还是多线程化我的应用程序_C++_Hardware - Fatal编程技术网

C++ 我需要并行化还是多线程化我的应用程序

C++ 我需要并行化还是多线程化我的应用程序,c++,hardware,C++,Hardware,关于线程和核心这两个术语,以及它们与我在家用计算机上编写和执行的程序之间的关系,我在概念上有些混淆。假设我在我的机器上运行以下程序,它有四个线程 #include <iostream> using namespace std; int main() { int long long num = 1E15; while(num--) { cout << num << endl; } return 0; }

关于
线程
核心
这两个术语,以及它们与我在家用计算机上编写和执行的程序之间的关系,我在概念上有些混淆。假设我在我的机器上运行以下程序,它有四个线程

#include <iostream>

using namespace std;

int main()
{
    int long long num = 1E15;
    while(num--)
    {
        cout << num << endl;
    }
    return 0;
}
#包括
使用名称空间std;
int main()
{
int-long-long-num=1E15;
while(num--)
{

cout通常情况下,
多线程
将强制操作系统使用多个CPU核心。但这始终依赖于操作系统。操作系统的调度程序负责根据其策略分配线程。

通常,
多线程
将强制操作系统使用多个CPU核心。但这始终是错误的依赖于操作系统。操作系统的调度程序负责根据其策略分配线程。

是一个硬件概念。当我们说CPU有
n
内核时,我们的意思是它可以同时做
n
事情

是一个软件概念。它指的是可由操作系统调度程序独立管理的指令序列。通常,一个由一个或多个线程组成,尽管进程和线程之间的区别有些模糊

在任何给定的时刻,内核要么空闲,要么正在执行线程

您的示例当前只有一个线程。因此,它不能使用多个内核。要使用多个内核,您需要引入多个线程或多个进程。这可以称为并行化程序,但值得注意的是,使用多个线程/进程来并行化程序。

a这是一个硬件概念,当我们说CPU有
n个
内核时,我们的意思是它可以同时做
n个
事情

是一个软件概念。它指的是可由操作系统调度程序独立管理的指令序列。通常,一个由一个或多个线程组成,尽管进程和线程之间的区别有些模糊

在任何给定的时刻,内核要么空闲,要么正在执行线程


您的示例当前只有一个线程。因此,它不能使用多个内核。要使用多个内核,您需要引入多个线程或多个进程。这可以描述为并行化您的程序,但值得注意的是,使用多个线程/进程并行化一个程序。

程序是一个非常糟糕的例子,因为它不能并行化(即使可以并行化,也完全没有用,因为性能受I/O限制).你对这个问题做过任何研究吗?我知道在过去几天里这里也有人问过类似的问题。这个程序是一个非常糟糕的例子,因为它不能并行化(即使可以,它也完全没有用,因为性能受I/O限制).你对这个问题做过任何研究吗?我知道在过去几天里这里也有人问过类似的问题。