Разница между многопоточностью и параллельным программированием? - PullRequest
12 голосов
/ 25 ноября 2011

У меня есть четырехъядерный процессор.Я написал что-то подобное в Java;

Some.java;

public class Some extends Thread {
    private SharedData sharedVal;
    private String name;

    public Some(SharedData val, String threadName) {
        sharedVal = val;
        name = threadName;
    }

    public void run() {
        int temp;
        while(true) {
            temp = sharedVal.GetValue() + 1;
            sharedVal.SetValue(temp);
        }
    }
}

SharedData.java;

public class SharedData {
    private int value;

    SharedData() {
        value = 0;
    }

    public void SetValue(int d) {
        value = d;
    }

    public int GetValue() {
        return value;
    }
}

Program.java;

public class Program {
    public static void main(String[] args) {
        SharedData test = new SharedData();

        Some t1 = new Some(test, "thread1");
        Some t2 = new Some(test, "thread2");
        Some t3 = new Some(test, "thread3");
        Some t4 = new Some(test, "thread4");

        t1.start();
        t2.start();
        t3.start();
        t4.start();
    }
}

Я запускаю программу и проверяю графику процессора, каждая часть процессора выглядит примерно на 90%.

У меня вопрос;если я могу использовать системные ресурсы, как это, что такое параллельное программирование?Я правильно понял?Я видел пример на C # с использованием счетчика процессора, что за дело с этим?

Ответы [ 3 ]

19 голосов
/ 25 ноября 2011

Параллельное программирование означает использование набора ресурсов для решения некоторой проблемы за меньшее время путем разделения работы. Это абстрактное определение, и оно опирается на эту часть: решить некоторую проблему за меньшее время, разделив работу . То, что вы показали в своем коде, не является параллельным программированием в том смысле, что вы не обрабатываете данные для решения проблемы, вы просто вызываете некоторые методы в нескольких потоках. Хотя это «параллельно», это не глобальное решение проблемы.

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

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

8 голосов
/ 31 августа 2013

Параллельное программирование - это целая концепция, а многопоточность - один из специфических способов параллельного программирования. Например, вы также можете выполнять параллельное программирование с помощью MapReduce, где каждая задача может выполняться в отдельном процессе в разных системах. С другой стороны, многопоточная программа не обязательно означает, что программа параллельна. Можно запустить многопоточную программу на одноядерном компьютере, и в этом случае программа не выполняется параллельно.

3 голосов
/ 25 ноября 2011

Параллельное программирование - это супер-набор многопоточности (то есть многопоточность - это способ параллельного программирования, но существуют и другие способы написания параллельных программ, например, многопроцессорных программ).

Основное различие между потоками и процессом:

потоки в одном и том же процессе могут совместно использовать ресурсы памяти.

Процессы должны явно передавать любую информацию, которой они хотят поделиться, с другими процессами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...