Re[3]: Скриптовый(?) язык с нативными потоками
От: Critical Error ICQ: 123736611
Дата: 21.02.10 05:59
Оценка:
Здравствуйте, Mr.Cat, Вы писали:

MC>Вот как раз GIL и хотелось бы отправить в печку. Чтобы в разных нативных потоках выполнялся код на самом языке.


Ну насколько я понимаю, довольно трудно сделать скриптовый язык без GIL. Если не блокировать реальное параллельное выполнение, то можно необратимо повредить структуру объектов в памяти языка. Обычно это ведет к падению. Когда-то я писал расширение на C++ для Python. Тогда я еще не знал про GIL. Так вот эти мои эксперименты заканчивались эпическими крашами всей системы. Опять же с GC проблемы... Вообще питонисты когда им надо делать реально-параллельную работу спавнят еще один процесс интерпретатора и взаимодействуют друг с другом через какой-нибудь IPC.

В общем чтобы не было проблем со структурой объектов в памяти надо смотреть в сторону языков с изолированными потоками. То есть там где объект будучи переданным другому потоку не разделяется, а полностью копируется. Там же должен быть свой менеджер кучи и свой GC на поток. Может еще быть какое-нибудь встроенное средство для обмена сообщениями. Честно сказать я такого языка не знаю

Ну или в корне менять подход при работе с тредами. Можно посмотреть в сторону языков для БД. Например как оно сделано в PL/SQL?

В Erlang разработчики все грозились сделать нативные треды. Вроде как деже сделали, но что у них получилось я не в курсе. Когда я последний раз работал с Erlang-ом, заметил интересную особенность при работе с драйвером ODBC. Тот самый драйвер отпочковывал некий процесс odbcserver.exe через который и проходили все блокирующие общения с базами данных. Вот такая вот нативная параллельность...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.