[Moscow.pm] Распараллелить

thecrux на gmail.com thecrux на gmail.com
Вт Окт 16 05:17:26 PDT 2012


On Tue, Oct 16, 2012 at 02:10:36PM +0400, Alexandr Alexeev wrote:
> "196   Alexandr Alexeev"
> 
> :facepalm:
> 
> "Если сбилдить перл с поддержкой тредов, то они-таки будут, но
> действительно - потоки нужны только тогда, когда идет обмен большим
> количеством информации, а работать с шаред памятью не хочется/не знаешь как
> или не получается по тем или иным причинам."
> 
> Я могу ошибаться, но разве в потоки в Perl реализованы как раз не в виде
> fork() + та же самая разделяемая память для shared переменных?

В windows Perl эмулирует fork посредством thread'ов. Возможно вспомнили
про этот факт?

Из perl.h видно, что на POSIX системах используется POSIX threads. Кроме
POSIX платформ там упоминается Netware, Win32, OS2 и Mach. Есть там упоминание
и о FAKE_THREADS, но это похоже на эмуляцию тредов для систем, которые вообще
не имеют реализации тредов. Сложно сказать работает ли этот код сейчас, но
судя по всему там используется пара двусвязных списков для работающих и ожидающих
фэйковых тредов, операции которых последовательно выполняются в рамках одного
процесса, что, кстати, говорит о том, что прервать выполнение фэйкового
треда для выполнения следующего можно только когда выполняется pure perl
код (не XS).

-- 
Vladimir Lettiev aka crux ✉ theCrux на gmail.com


Подробная информация о списке рассылки Moscow-pm