Size: a a a

2021 January 22

AK

Andrey Konovalov in Modern::Perl
Как говорится, use MCE, Luke
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
Oleg Pronin
Вячеслав, разницы между сериализацией + IPC и threads shared большой нет. Перл не умеет треды. Он все клонирует. А тредс шаред это сериализация и копирование в данные другого треда таже самая. Разве что писать поменьше
разве? т.е. даже если мне просто получить результаты?
а как мне в этом убедиться?
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
Oleg Pronin
Сериализует и копирует в другой тред
а потом сериализует и копирует обратно что ли?
источник

OP

Oleg Pronin in Modern::Perl
Замедление там складывается из дофига факторов. Начиная от того что лишний параметр в каждую функцию таскается, константы больше не хранятся в op’ах, а лежат в тред локал глобальном массиве, и тд
источник

OP

Oleg Pronin in Modern::Perl
Я не помню точную реализацию шареда щас гляну
источник

AK

Andrey Konovalov in Modern::Perl
Vyacheslav Olkhovchenkov
а потом сериализует и копирует обратно что ли?
Зато у нас Perl 7! Это же 7, не 5 уже! Так дело пойдёт, мы до 12 вырастем, и тогда точно весь мир будет у наших ног. Ну или где-то рядом.
источник

VG

Vadim Goncharov in Modern::Perl
Andrey Konovalov
Если он где-то был weaken, то нет
что-то у меня возникло обратное подозрение, может где-то не был сделан weaken на $hash{key}
источник

VG

Vadim Goncharov in Modern::Perl
чем можно посмотреть, сколько у объекта ссылок и где они?
источник

OP

Oleg Pronin in Modern::Perl
Oleg Pronin
Я не помню точную реализацию шареда щас гляну
Да, для строк полное копированиеполное копирование
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
Oleg Pronin
Да, для строк полное копированиеполное копирование
это для share()? и в каком случае? по обращению или по созданию?
источник

OP

Oleg Pronin in Modern::Perl
Когда ты сетишь туда чето
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
или для shared_clone?
источник

OP

Oleg Pronin in Modern::Perl
Причем 2 раза
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
а какие два раза?
источник

OP

Oleg Pronin in Modern::Perl
Если треда 2)
источник

OP

Oleg Pronin in Modern::Perl
my $str :shared;

При установки строки в $str она будет скопирована кол-во тредов раз. Один сразу и еще n-1 потом по мере обращения тредов к ней
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
не понимаю. можно более детально, на примерах.
вот есть скажем у нас
my %res :shared;

в треде делаем $res{x} = 'qqqqqqqqqqqqqqqqqq';

потом в основном потоке обращаемся к $res{x}.

какие копирования и когда будут?
источник

OP

Oleg Pronin in Modern::Perl
Хеш я не изучал еще. Я посмторел для скаляра (не референса)
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
окей. а откуда там копироваться будет после первой модификации в треде?
источник

OP

Oleg Pronin in Modern::Perl
Архитектура такая там:
В каждом треде своя sv $str. К каждой из них добавлена магия. В магии есть указатель на еще одну sv - прокси. Она одна для всех тредов. Главное что к ней нет доступа из перла иначе все сломается. Когда ты сеттишь он помещается строку в sv твоего треда + копирует в прокси. Другие треды когда геттишь (магия срабатывает) если есть че в проксе свежее клонят к себе.
источник