Управление несколькими процессами: каковы общие стратегии? - PullRequest
2 голосов
/ 24 августа 2010

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

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

Однако, когда я ищу пул приложений в Google , кажется, что большая часть его использования связана с IIS,Разве другие приложения (например, научные / графические) не считают полезным порождать несколько рабочих процессов?

Итак, есть несколько вопросов:

  • Почему не COM +более популярны в других областях, чем IIS?Если я напишу приложение, отличное от IIS, и захочу использовать управление процессами в Windows, стоит ли мне использовать COM + или есть лучшие альтернативы?

  • Каким будет кроссплатформенный способсделай это?Существуют ли библиотеки, которые дают мне «пул процессов» (рабочие процессы будут интеллектуально подбирать работу, могут управляться и т. Д.)

Ответы [ 6 ]

3 голосов
/ 29 августа 2010

Возможно, вы захотите выяснить, как веб-сервер apache управляет пулами процессов.Начиная с версии 2.0, он изначально работает на Windows , и одна из поддерживаемых моделей многопроцессорной обработки - это пулы процессов.Частью Apache является также APR (переносимая среда исполнения Apache), которая решает проблемы, связанные с платформой.

2 голосов
/ 04 сентября 2010

Я не могу предложить никаких ответов на COM-аспект вашего вопроса, но стоит отметить, что есть другой мир (помимо HPC MPI), где многопоточность (а не более распространенный многопоточный подход), очевидно, жива, хорошои процветает: Python .

Почему?GIL Python (" глобальная блокировка интерпретатора ") наносит вред большинству попыток многопоточного кода Python настолько сильно, что многопроцессорная обработка - это обычно рекомендуемый подход к распараллеливанию Python на SMP.Стандартная библиотека включает в себя пулы процессов ;Существуют различные другие опции .

Python, безусловно, должен удовлетворять любым многоплатформенным требованиям!

2 голосов
/ 03 сентября 2010

Там не было толпы, мчащейся через двери пула приложений COM, в основном из-за двух факторов:

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

Пул COM-приложений по сути был создан для IIS.Он имеет одно очень специфическое преимущество перед обычной многопоточностью: несколько процессов полностью изолированы друг от друга.Это важно для безопасности данных и стабильности приложений при работе со сторонними плагинами сомнительной стабильности.

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

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

Короче говоря, пул приложений COM излишним для всего, кроме IIS.

2 голосов
/ 31 августа 2010

Да, другие приложения, особенно научные, считают полезным создание нескольких процессов. Поскольку немногие суперкомпьютеры работают под управлением Microsoft Windows, ученые обычно избегают использования чего-либо, связывающего их с платформой Microsoft. Ничто, связанное с COM, не поможет ученым использовать их огромную существующую кодовую базу, написанную на Фортране.

Люди, решившие запустить IIS, обычно уже пили Microsoft Koolaid, поэтому у них меньше запретов на привязку к проприетарным платформам Microsoft, поэтому терминология, связанная с COM, получит множество обращений, связанных с IIS.

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

См. http://en.wikipedia.org/wiki/Message_Passing_Interface

2 голосов
/ 29 августа 2010

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

По этой причине возникла управляемая среда.

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

Для мультиплатформенности вы можете найти ответ zvrba.

0 голосов
/ 04 сентября 2010

Браузер Google Chrome - это программное обеспечение для многопроцессорной архитектуры. Это открытый исходный код, поэтому вы можете проверить его код и посмотреть, как управлять процессами.

...