Re: FLEX в многопоточном окружении

From
Pertzel Family ()
To
Yuri Muhitov
Date
2002-11-01T12:43:22Z
Area
RU.ALGORITHMS
From: "Pertzel Family" <voldemar@relhum.org>


"Yuri Muhitov" <muhitov@bercut.ru> wrote in message news:apraob$3fo$1@ddt.demos.su...

> Интересует следующий вопрос : насколько возможно использование flex  в
> многопоточном окружении. Необходимо поместить парсер в DLL, из которой его
> могут вызвать множество клиентов.

flex, собака, использует глобальные переменные,
причем, принципиально важные, вроде YYTEXT.
При необходимости создания нескольких
независимых парсеров, используется опция -P,
которая переименовывает глобальные переменные
в сгенерированном Ц-шном коде.

Если клиенты при обращении к парсеру всегда
начинают и заканчивают работу по точной границе
лексемы и не оставляют в буффере ввода flex
(речть о flex -- у lex отдельного буфера нет),
то проблем никаких просто не будет. Если же
ситуация не такова, да еще при асинхронной
работе, flex в чистом виде непригоден. *По*
*слухам* для этого есть в самом пакете добавка
-- flex++, которой я сам не пользовался.

--- ifmail v.2.15dev5
 * Origin: Sent via Graf's Inn at news://news.relhum.org (2:5020/400)