我正在尝试对不断填充和重新填充的缓冲区使用 flex 。
我有多个线程使用它们自己独立的缓冲区副本。
在我的主程序中,它看起来像这样:
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 扫描仪与另一个程序结合使用。在 flex 中进行所有缓冲区处理,并将其与主程序中的 extern 声明链接起来会更好吗?
谢谢