C параллельный поток против параллельного процесса - PullRequest
0 голосов
/ 30 октября 2018

У меня есть небольшая программа на c, которая использует большое количество процессоров, эта программа скомпилирована для exe, и я запускаю ее как процесс из моего c # gui.

Когда я хочу запустить его параллельно на всех ядрах процессора, у меня есть 2 варианта.

У меня 4 ядра процессора.

  1. Запустите этот exe-файл из моего процесса c # как 4, чтобы моя ОС отделяла эти процессы 1 для каждого ядра.

  2. Отредактируйте мой код c так, чтобы он запускал 4 потока, чтобы os отделял 1 поток для каждого ядра, а из c # я буду запускать его как 1 процесс.

Какой путь будет быстрее?

Редактировать: эти процессы / потоки будут работать как 3-5 часов, и нет необходимости взаимодействовать между другим потоком / процессом.

Все это работает на Windows

Ответы [ 2 ]

0 голосов
/ 30 октября 2018

Для выделения процесса требуется больше времени на выделение потока, поскольку потоки совместно используют ресурсы (код, данные ...)

Если ваш процессор постоянно меняет процессы (это обычно происходит), это не лучшее решение, использующее процессы, использование потоков более эффективно, особенно в системах с одним процессором ...

https://stackoverflow.com/a/200543/3476815

0 голосов
/ 30 октября 2018

Запуск 4 потоков в C будет быстрее, чем запуск 4 процессов в C #.

Существует более высокий штраф за переключение между процессами, чем за переключение между потоками, и обмен данными между процессами происходит медленнее, чем между потоками.

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