Ticket #763 (new enhancement)

Opened 4 years ago

Last modified 1 year ago

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

Reported by: sdlime Assigned to: 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

09/20/04 13:26:05 changed by sgillies@frii.com

  • cc deleted.

08/17/07 02:56:34 changed by hobu

  • description changed.

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

08/17/07 09:46:01 changed by sdlime

  • milestone set to 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