[IPython-dev] Macros don't work in threaded shells
Ville M. Vainio
vivainio at gmail.com
Mon Mar 10 17:55:23 EDT 2008
On Mon, Mar 10, 2008 at 10:40 PM, Ville M. Vainio <vivainio at gmail.com> wrote:
> However, with these alterations, I think the condition variable and
> 'got_lock' is an unnecessary complication... but this code is too
> brittle to play around too much, perhaps.
Though I also figure making it simpler would reduce the danger of
deadlocks and other oddities in the future. All we really need is the
following structure:
- runsource either
1) executes the code directly (if we are in worker thread, i.e. what I just did)
or
2) Puts (code, event: threading.Event) tuple in queue, and does
even.wait() before it returns
Runcode runs code and does event.set()
The Queue structure really does all the rest, and I can't see any
variables in MTInteractiveShell that need protecting (through using
Condition instead of Event) from re-entrant use, esp. since runcode
always runs in the same thread. Essentially, the Condition variable
now duplicates functionality now already in Queue (in inferior fashion
- queue is first come, first served, if there were ipython commands
being executed from multiple threads) and makes it harder to
understand (I think the condition variable in general is a bit hard to
grasp, compared to other threading primitives).
Thoughs? Perhaps this is radical enough to be experimented in a
separate bzr branch?
--
Ville M. Vainio - vivainio.googlepages.com
blog=360.yahoo.com/villevainio - g[mail | talk]='vivainio'
More information about the IPython-dev
mailing list