On Thu, Jan 01, 2004 at 11:21:57AM -0800, Jeff Clites wrote: > As far as what level needs to implement them, I'd say that parrot has > to do enough to make it possible for an HLL to expose ithreads-style > threading. Due to the cross-language nature of parrot, practically > speaking this probably means that the semantic needs to exist at the > parrot level. (For instance, an ithread created in Perl code could load > a parrot bytecode library implemented in Python; calling into code > inside this library shouldn't allow access to "unshared" data from > other ithreads.)
The other big thing about ithreads is that the 'not shared by default' model implies that each time a new thread is created by a request from the HLL, the whole current interpreter state must be copied (or some COW scheme interposed0) so that when the new thread makes changes to a pre-existing variable, that change isn't seen by any of the ancestor threads. That implies some support from parrot. -- O Unicef Clearasil! Gibberish and Drivel! - "Bored of the Rings"