[Twisted-Python] PDF I thought may be of interest

glyph at divmod.com glyph at divmod.com
Tue Dec 9 15:31:50 MST 2008


On 10:06 pm, ms at cerenity.org wrote:
>Looking slightly below the surface of things, it appears to be 
>advocating
>something more like stackless's tasklets, rather than OS level threads 
>(since
>it makes reference near the end to Erlang's threading model).

Yes, and for this reason I found the paper to be somewhat disingenuous. 
It pops up every so often.

For one thing, it doesn't mention the extreme difficulty of writing 
correct threaded code that manages shared state.  There is a brief nod 
to this, where they say "Although static detection of race conditions is 
challenging"... then they go on to say maybe it's possible if you do 
some whole-program analysis, completely disregarding the unsuitability 
of whole-program analysis to long-lived, dynamic server systems 
(arguably the most popular choice for highly concurrent systems) which 
often require live, and therefore modular, updates.

Simplicity is Twisted's main advantage - obviously if we were 
performance-obsessed Python would be a poor choice for an implementation 
language, and all the paper really talks about is performance.  It's 
easier to write *correct* code in an event-driven model because 
everything that's happening is obvious once you understand what's going 
on.  I've often spotted concurrency problems in Twisted just in a code 
review.  In a threaded program, even if you're a threading expert, it's 
very very easy to miss subtle concurrency bugs.

For another, the paper arbitrarily redefines the word "threads" to mean 
"this cool thing that doesn't exist yet", rather than existing things 
that people call "threads".  It specifically mentions the deficiencies 
of current thread implementations and does not always point to specific 
improvements, let alone the challenge of popularizing and deploying 
those improvements.  The comparison to erlang's concurrency model is 
interesting, since they specifically avoid the term "threads" - erlang 
calls them "processes" to avoid exactly the confusion the authors are 
attempting to create.

So, in the fantasy world the authors have constructed, where threads are 
different than what we call "threads", they might be better than 
"events" for high-concurrency systems.  I'm probably even glad they 
chose the misleading, but controversial, title to draw attention to 
their work, because I think those ideas are interesting (if impractical) 
and I'm glad I read about them.




More information about the Twisted-Python mailing list