Critical sections and mutexes

brueckd at tbye.com brueckd at tbye.com
Thu Oct 25 09:54:30 EDT 2001


On 25 Oct 2001, David Bolen wrote:

> thread.  Sure there are some pure producer/consumer scenarios that are
> safe, but they're safe in any language, with or without a GIL, to some
> level of granularity.  (E.g., even in C, a producer consumer of a
> shared integer can be considered the same level of safety we're
> talking about here).

Exactly! All languages have a safe level of granularity (certainly not
limited to simple producer/consumer cases); I'm observing that Python has
an expanded level that you can very safely rely on. In a C class that
handles log messages, I wouldn't bother locking access to the integer flag
that tells the current log level, but I certainly would use a lock to
synchronize appending a new log message to the output queue. In Python,
there's no compelling reason to locks in either case. Are there still
cases where I do need locking in Python? Absolutely!

> If you're able to make assumptions in applications and get away with I
> certainly won't stop you from writing that way

Thank goodness! I was worried. :-)

> But the GIL does nothing for application-specific shared resources.
> It only protects the interpreter, so that, as you mentioned in another
> response, a normal Python script can't crash the interpreter.  It does
> nothing to prevent application-specific data structures from becoming
> corrupt and affecting the behavior of the application.

Hey, did you cut and paste that from one of my previous posts? It sounds
an awful lot like what I was saying. :-)

Have fun,
Dave





More information about the Python-list mailing list