Perl - Танц на многонишкова рейка, блог на Амин

Всякакви мисли за живота, и дори така - справка за себе си

И така, първата радост от използването на многопоточност в Perl беше разбита от брутален рейк. ...

Сценарият, който работи доста добре на 300 нишки, умира при опит да обработи 600 нишки, въпреки факта, че завършването им е написано правилно. Нека вземем тестов скрипт като този:

Стартираме го в Linux и виждаме напълно шибан:

След дълго четене на mans и googling откриваме каква функция призовава перлата и вече на много по-ниско ниво откриваме същността на проблема във форума на съвсем друга тема: http://forum.sources.ru/ index.php? showtopic = 247550 и се възхищавайте:

системата фалира за цели 9 (!) метра RAM. Освен това, когато тази нишка завършва с pthread_exit (0); паметта не се освобождава.

Отваряме втората обвивка, стартираме скрипта от отделен потребител (така че да няма ирелевантни процеси в htop с филтър от потребител) и съзерцаваме невероятното:

танц
Като цяло, вмъквайки паузи в скрипта, успяхме да разберем, че въпреки нишките на повикванията-> изход (0);, в края на нишката, разпределената за нея памет не се освобождава. Е, тъй като има много нишки за създаване и всеки изяжда чудовищните 9Mb, тогава с VIRT = 3Gb скриптът съвсем естествено идва до полярна лисица.

Но най-лошото е, че при FreeBSD 7.3 няма такъв проблем, въпреки че консумацията на памет също е прецакана:

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

Споделя това:

Хареса това:

След навигация

Karman пише: Trolololololo. 111 едно. Винаги ли знаех? че аргументът "Всичко работи за мен КАКВО Е?" убит в нашия несъвършен свят.

И какъв никсам идва? И тогава има много от тях тук ... JunOS, Ubiquity AirOS и нов Cisco IOS - опасност? И колко спешно трябва да премина от фряк и федор към Windows-2008? Между другото, колко лесно е да използвам вградените инструменти в Windows-2008, за да объркам скрипт, който ще се свърже с базата данни, вземете списък с хардуер и портове от тук и го настройте автоматично чрез telnet/sssh за достатъчно време acl-ki на 600 парчета желязо ?

Perlovka пише: И Perl харесва mnu, въпреки че други се влюбват в лошата тема. Вече седем години като на "перлен ечемик" и полетът е нормален. Наистина има няколко задръствания, но това не е критично. Езикът е добър. Бих искал да прочета публикациите на г-н Амин за перлата на http://forum.script-coding.com/ - нещо като фокус за сценаристите. Дори въпреки големия си опит в програмирането, имам още много да науча.