Сложность? Нет
Просто запустите несколько экземпляров Pharo и попросите их обмениваться данными через сокеты или сохранить их окончательные данные в общий файл. Ваша ОС будет управлять каждым экземпляром и отправлять его для выполнения в diffirent core. Модуль OSProcess предлагает такую функциональность и имеет успешные реализации, такие как Hydra и RoarVM, проблема в том, что их никто не использует.
На самом деле самое сложное в параллелизме - заставить людей использовать его. Сегодняшние аппаратные приложения редко попадают в 100% одного ядра. Я едва сделал Фаро выше 10%.
Также как и многие языки программирования динамического программирования Smalltalk - это язык разработки разработчика, а не язык приложений.
Если у вас действительно есть такая серьезная проблема с обработкой, вы должны использовать такие языки, как C и C++, которые являются ориентированными на производительность приложений языками.Не только его труднее использовать этот язык, но даже параллелизм очень трудно сделать правильно даже с правой библиотекой. Аппаратное обеспечение очень странное, мудрый дизайн, и там, как тонна ошибок, о которых вы должны знать.
И вот почему параллелизм лучше подходит для этих языков программирования. Конечно, вы можете создавать библиотеки на C/C++ и использовать Pharo или другие smalltalks. Python делает это. Python и Pharo очень похожи, поскольку они используют GIL и имеют зеленые потоки. Получается, что вам придется присоединяться к вашим потокам обратно в основной поток, чтобы виртуальная машина имела прямой доступ к ней, но есть способы обойти это, как я уже говорил, сокетную связь, трубы, файлы с общей памятью и многое другое.
Патентные библиотеки Python - все основанные на C/C++.
Параллелизм сам по себе является очень сложной темой, даже если у вас есть параллельность, возможно, что ваш код будет таким же медленным, как работа на одном потоке и одном ядре. Но это общая проблема с производительностью приложений, в тот момент, когда вы хотите выпустить столько энергии, сколько вам нужно, чтобы знать, как работает оборудование.
Аппаратное обеспечение сегодня является суперкомплексным. Язык - это наименьшая из ваших проблем.
В Smalltalk вполне возможно, но, откровенно говоря, в этом не так много людей. Я видел вопросы о параллелизме в списках рассылки Pharo, которые я посещаю последние два года, может быть, один или два раза. И даже для параллелизма его очень редко кто-то задает вопрос об этом.
Да, конечно, «перерыв» в критическом месте разрушил бы свойства, ожидаемые от кода. Но это не свойственно SmallTalk; эта проблема имеет параллельный язык. Они решают, настаивая на том, что а) вы не можете прервать некоторые вещи) или б) некоторые вещи являются транзакционными и полными независимо от того, что. Таким образом, ключевой проблемой «создания Smalltalk parallel» является добавление параллельных потоков и добавление транзакционной безопасности (как со стороны механизма выполнения), так и в случае, когда программист настаивает на необходимости. –
@IraBaxter Абсолютно. Я просто хотел указать, что небольшой параллелизм в порядке, и проблема возникает, когда вы хотите принять это намного дальше. –