我需要并行化或多线程我的应用程序
do I need to parallelize or multithread my application
我对术语thread
和core
有一些概念上的混淆,以及它们与我在家用计算机上编写和执行的程序的关系。假设我在我的机器上运行以下程序,这台机器是四核主板,有四个线程
#include <iostream>
using namespace std;
int main()
{
int long long num = 1E15;
while(num--)
{
cout << num << endl;
}
return 0;
}
如果我想让这个程序使用多个内核,我的程序需要支持多线程还是需要并行化?或者在我的情况下是一样的,因为我的CPU每核有一个线程?
内核是一个硬件概念。粗略地说,当我们说一个CPU有n
个核心时,我们的意思是它可以同时做n
个事情。
线程是一个软件概念。它指的是可以由操作系统调度程序独立管理的指令序列。通常,一个进程由一个或多个线程组成,尽管在某些操作系统中进程和线程之间的区别有些模糊。
在任何给定的时刻,一个核心要么是空闲的,要么是正在执行一个线程。
你的例子目前只有一个线程。因此,它不能使用超过一个核心。要使用多核,您需要引入多个线程或多个进程。这可以描述为并行化程序,尽管值得注意的是,使用多个线程/进程并不是并行化程序的唯一方法。
通常,multithreading
将强制操作系统使用多个CPU核心。但这总是与操作系统有关。操作系统的调度程序负责根据其策略分发线程。
相关文章:
- 我可以计算多线程数的平均值吗?
- 具有多线程支持的 RenderClass,将函数调用推送到向量以在另一个线程上调用
- 在官方 ZeroMQ 多线程示例的修改版本中崩溃
- C++ 多线程中的锁和条件变量问题
- 多线程中的 std::basicstring 的运行时分段错误C++点燃进程
- 按顺序保留多线程API的传入请求订单
- 如何解决多线程绘图的问题不流畅
- 多线程中的不明确输出
- 多线程中的同步
- 使用多线程处理的异步请求
- 内存分配对多线程性能的影响
- 具有`k`线程的多线程程序的运行速度都比其顺序版本快
- 多线程 UI 的最佳方式
- C++中多线程中的读取器和编写器
- 提升多线程向量的返回值
- Unicore系统中多线程程序的好处
- 避免使用多线程c++优化的变量
- C++中多线程冲突的可能性
- 多线程:我需要用只读方法保护我的变量吗
- 我需要并行化或多线程我的应用程序