Opened 20 years ago

Last modified 17 years ago

#763 new enhancement

Update MapServer to use a re-entrant scanner (yylex)

Reported by: sdlime Owned by: sdlime
Priority: high Milestone: FUTURE
Component: MapServer C Library Version: unspecified
Severity: minor Keywords:
Cc:

Description (last modified by hobu)

Recent versions of flex have the ability to create a re-entrant, that is 
thread-safe scanner. The thought is to embed the scanner structure (in lieu of 
global vars) in a MapServer object (e.g. scannerObj) and create it when the 
mapObj is initialized. The scanner would live within a mapObj instance or in 
our case clone. This means a single mapObj would NOT be thread-safe, but 
cloned mapObj's would. This is about as good as we're gonna get.

Steve

Change History (3)

comment:1 by sgillies@…, 20 years ago

Cc: sgillies@… removed

comment:2 by hobu, 17 years ago

Description: modified (diff)

With the locking we have around the parser now, this isn't really much of an issue anymore, right?

comment:3 by sdlime, 17 years ago

Milestone: FUTURE

We spend so much time in the parser (at least potentially) that the locks can stack up and create a bottleneck. So, I think it makes sense to keep this around as a future feature... I actually don't think it's that hard, we'd just hand a parserObj off a mapObj to hold the flex/bison globals.

Steve

Note: See TracTickets for help on using tickets.