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