[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: | 2004-05-27 (09:34) |
From: | skaller <skaller@u...> |
Subject: | Re: [Caml-list] unix.chop_extension |
On Thu, 2004-05-27 at 17:46, Markus Mottl wrote: > On Thu, 27 May 2004, skaller wrote: > > AFAIK: The C Pcre that it wraps does use global variables > > and so while the interface appears re-entrant > > it isn't. > > To prevent people from getting a false impression of PCRE as interfaced > to OCaml: it _is_ safe. You are using the word 'safe' imprecisely. Reentrant is specific. So is thread-safe. Re-entrant + no shared data structures implies thread-safe. Thread safe doesn't imply re-entrant. In particular, re-entrant is a stronger condition in the sense that it implies all callbacks including asynchronous invocations from signal handlers will work: thread safe code may deadlock here. > The use of global variables by the C-library does not necessarily imply > that the program is unsafe. It all depends on their use, and in this > case the global variables (e.g. pcre_callout) are initialized exactly > once at startup time, i.e. before the user can access any functions. If this is so, the globals are merely constants, and the code will be re-entrant after the initialisation is complete. However my examination of the C Pcre at one time showed this was NOT the case. Instead, certain options were stored in global variables on every call, and that implies the code isn't re-entrant and cannot ever be made so. I may have been wrong, and perhaps I was right but Pcre has changed: I last looked some years ago whilst working on Vyper .. As Markkus comments use of imperative style is not the issue here. A function can easily modify variables and be re-entrant provided the variables are (rooted) on the stack. -- John Skaller, mailto:skaller@users.sf.net voice: 061-2-9660-0850, snail: PO BOX 401 Glebe NSW 2037 Australia Checkout the Felix programming language http://felix.sf.net ------------------- To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/ Beginner's list: http://groups.yahoo.com/group/ocaml_beginners