ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: embedded javascript



On Tue, Feb 09, 2010 at 05:03:59PM +0300, Peter Leonov wrote:

> On 09.02.2010, at 14:06, Igor Sysoev wrote:
> 
> > Я сейчас изучаю v8 на предмет встраивания в nginx
> Ура!!! :)
> 
> Тока у v8 есть один неприятный недостаток: он не умеет предупреждать, когда 
> освобождает память под объектом. То есть надежные деструкторы там пока 
> сделать нельзя (есть, правда извороты, но они недокументированные). В 
> принципе, это ничем не грозит, если не будет ситуаций, когда яваскрипт просит 
> энжинкс ?попредержать? освобождение запроса.

Имеются ввиду weak references ?
Что касается недокументированности, то там недокументировано всё, что выходит
за пределы банального "hello world!".

> > и у меня возник вопрос
> > по поводу интерфейса - как лучше связать запрос с javascript'ом:
> > 
> > 1) сделать предопределённый объект request, по аналогии с браузерными window
> >   и document.
> > 2) или передавать его первым параметром функции, как в перле и в одной
> >   из реализаций nginx/v8:
> >   function handler(request)
> >       http://code.google.com/p/ngxv8/source/browse/trunk/examples/simple.js
> 
> ИМХО, второй.
> 
> Если использовать первый вариант, то в разные моменты времени глобальная 
> переменная будет указывать на разные запросы. Ее придется выставлять, когда 
> пришел таймер. А иногда она будет вообще пустой или указывать на отработавший 
> запрос. И в любом случае ее придется пересохранять, чтобы запомнить в 
> замыкание. А что будет, если вернутся треды? ;)
> 
> Первый способ легко построить на основе второго практически бесплатно, а вот 
> наоборот будет сложнее (учитывая глобальные и запросовые таймеры, колбеки 
> подзапросов и приема тела).
> 
> А еще глобальные переменные по определению медленнее параметра функции ;)

В v8 для каждого запроса, скорее всего, придётся делать свой Context, и
в этом контексте будет один экземпляр объекта request. Так что он всегда
будет правильный. А что касается трэдов, то в v8 они только кооперативные.

> > Какой из этих способов можно также реализовать в TraceMonkey ?
> Любой.
> 
> Собственно, вот все мои мысли касательно связки нативный запрос + 
> яваскриптовая обвязка.
> http://kung-fu-tzu.ru/posts/2009/12/03/nginx-spidermonkey-memory-management/

Да, это я смотрел как-то, надо будет перечитатьь внимательнее.


-- 
Игорь Сысоев
http://sysoev.ru

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.