Создать несколько процессов

321
13 ноября 2017, 18:13

Задача состоит в том, что есть у меня процесс который табулирует функцию, сделать обчисление данной функции в 2х,4х,8х процессах, подскажите как реализовать данные условия.

Answer 1

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

Самый простой вариант — разделение работы в самом начале, при котором задача «протабулировать функцию» делится на 2 (или 4, или 8) подзадач. Вы запускаете управляющий процесс, который делит задание на части, запускает рабочие процессы, и собирает у них результат.

Например, если вам нужно протабулировать функцию на отрезке [a, b], вы можете поделить отрезок на 8 частей, и каждая часть будет представлять отдельную подзадачу табуляции. После этого вы запускаете 8 копий рабочего процесса, передавая им каждому свою подзадачу как входной параметр (например, через командную строку).

Вам нужно будет ещё подумать о сборе результатов. Например, если все процессы пишут в выходные файлы (путь к которым тоже бы неплохо передать на вход), в конце вам нужно будет собрать все результаты в один выходной файл.

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

Ещё более продвинутый вариант — динамическое распределение нагрузки между рабочими процессами. Для этого вам нужна будет двусторонняя коммуникация с рабочими процессами. Вы запускаете ваши рабочие процессы, и выдаёте им задание на табуляцию маленькой части исходного отрезка. Тот процесс, который первым закончит, получает следующее задание. Таким образом, ни один рабочий процесс не будет простаивать.

READ ALSO
Xamarin нарисовать график

Xamarin нарисовать график

Xamarin с помощью чего и как можно нарисовать график из бесплатных библиотек? В основном рекомендуют Syncfusion или TeeChart, но они платные и с достаточно...

269
WinForm GUI и основного кода

WinForm GUI и основного кода

ПриветствуюИнтересует где можно узнать побольше про разделение GUI и рабочего кода

285
Создание потоков c#

Создание потоков c#

1Создать отдельный поток для алгоритма сортировки 2

230
Сравнение больших нетекстовых файлов

Сравнение больших нетекстовых файлов

Есть некоторые файлы, которые программа должна сравнивать(они будут далеко не всегда текстовые), причем они могут быть большого размера,...

240