Я пытаюсь использовать flex против буфера, который постоянно заполняется и пополняется.
У меня есть несколько потоков, работающих со своими независимыми копиями буфера.
В psuedo в моей основной программе это выглядит примерно так:
while(forever)
{
-fill buffer buf-
buf[length+1] = '\0';
buf[length+2] = '\0';
yy_scan_bytes(&buf, length+2);
yylex();
}
где несколько потоков выполняют этот цикл, и все они владеют своей копией buf.
У меня есть правило в моем файле lex, которое выглядит так:
<<EOF>> {yyterminate(); yy_delete_buffer(YY_CURRENT_BUFFER);}
в попытке очистки после запуска буфера.
Я не уверен, что делаю это правильно, так как это моя первая попытка использовать гибкий сканер в сочетании с другой программой. Было бы лучше, если бы я выполнял всю обработку буфера из flex и связывал его с объявлением extern в моей основной программе?
Спасибо