мне нужно распараллелить или многопоточность моего приложения

У меня есть некоторая концептуальная путаница в отношении терминов thread а также coreи как они связаны с программами, которые я пишу и выполняю на своем домашнем компьютере. Допустим, на моей машине запущена следующая программа, которая четырехъядерная материнская плата с четырьмя нитями

#include <iostream>

using namespace std;

int main()
{
int long long num = 1E15;
while(num--)
{
cout << num << endl;
}
return 0;
}

Если я хочу, чтобы эта программа использовала более одного ядра, должна ли моя программа поддерживать многопоточность или ее нужно распараллеливать? Или это будет то же самое в моем случае, так как мой процессор имеет 1 поток на ядро?

1

Решение

Сердечники являются аппаратной концепцией. свободно Говорящий, когда мы говорим, что процессор имеет n ядра, мы имеем в виду, что это может сделать n вещи в то же время.

Потоки это концепция программного обеспечения. Это относится к последовательности инструкций, которыми может независимо управлять планировщик операционной системы. Как правило, процесс состоит из одного или нескольких потоков, хотя в некоторые операционные системы Различие между процессами и потоками несколько размыто.

В любой момент времени ядро ​​находится в режиме ожидания или выполняет поток.

Ваш пример в настоящее время имеет одну тему. Поэтому он не может использовать более одного ядра. Чтобы использовать несколько ядер, вам необходимо ввести несколько потоков или несколько процессов. Это можно описать как распараллеливание ваша программа, хотя стоит отметить, что используется несколько потоков / процессов это не единственный способ распараллелить программу.

6

Другие решения

Обычно, multithreading будут сила ОС использовать более одного ядра процессора. Но это всегда зависит от ОС. Планировщик ОС отвечает за распределение потоков в соответствии со своей политикой.

1

По вопросам рекламы [email protected]