2015-09-10 6 views
1

Я работаю над приложением, которое нужно искать в чрезвычайно большом пространстве состояний. Для этого мне был предоставлен доступ к узлу кластера с 32 ядрами. Моя программа не потребует большой памяти (вероятно, порядка 10 мегабайт), и мне не нужно делать много ввода-вывода (кроме того, для вывода решения, когда оно найдено в каком-то текстовом файле). Поэтому мой вопрос становится: лучше ли мне писать программу, чем запускает несколько потоков для параллельного выполнения поиска, или это то же самое, что и запуск экземпляров тех же процессов, что пространство поиска было разделено равномерно между они (заданы с разными аргументами командной строки)?Несколько потоков против нескольких процессов

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

+0

Что такое ОС? – Dialecticus

+0

CentOS 6 - Будем писать это на C/C++. –

+1

Для совершенно разделенной проблемы, вероятно, не будет разницы в производительности между использованием потоков и процессов. Используйте то, с чем вам удобнее. Одно из преимуществ процессов: если один рабочий сбой, только тот рабочий должен быть перезапущен, тогда как в многопоточной программе авария в одном потоке может снести все. – EOF

ответ

0

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

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

Как правило, если вы хотите сделать это простым, чем использовать однопользовательское однопользовательское приложение.

0

Я бы сказал, перейдите для нескольких процессов. Вам вообще не придется иметь дело с синхронизацией, и не будет объединения потоков.

Смежные вопросы