global interpreter lock

Bryan Olson fakeaddress at nowhere.org
Sun Aug 28 16:34:07 EDT 2005


phil hunt wrote:
 > It's not the number of paths that's important.

Absolutely right. Non-trivial software always has too many paths
to consider them individually, so we have to reason generally.

 > What's important is *predictability*, e.g. which instruction will
 > the computer execute next?
 >
 > If you only have one thread, you can tell by looking at the code
 > what gets executed next. It's very simple.

Not really. Trivially, an 'if' statement that depends upon input
data is statically predictable. Use of async I/O means makes the
programs execution dependent upon external timing.


 > If you have 2 threads you can easily have a timing-based situation
 > that occurs rarely but which causes your program to behave wierdly.
 > This sort of bug is very hard to reproduce and therefore to fix.

So we need to learn to avoid it.


[...]
 > Yes, find solutions. Don't find dangerous dead-ends that look like
 > solutions but which will give you lots of trouble.

If concurrency is a dead end, why do the programs that provide
the most sophisticated services of any in the world rely on it
so heavily?


-- 
--Bryan



More information about the Python-list mailing list