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限制).你对这个问题做过任何研究吗?我知道在过去几天里这里也有人问过类似的问题。