On Tue, Oct 12, 2010 at 10:43:44PM +0200, Leon Timmermans wrote: > On Tue, Oct 12, 2010 at 4:22 PM, Damian Conway <dam...@conway.org> wrote: > > The problem is: while most people can agree on what have proved to be > > unsatisfactory threading models, not many people can seem to agree on > > what would constititute a satisfactory threading model (or, possibly, > > models). > > > > What we really need is some anecdotal evidence from folks who are actually > > using threading in real-world situations (in *any* languages). What has > > worked > > in practice? What has worked well? What was painful? What was error-prone? > > And for which kinds of tasks? > > Most languages either implement concurrency in a way that's not very > useful (CPython, CRuby) or implement it in a way that's slightly > (Java/C/C++) to totally (perl 5) insane. Erlang is the only language > I've worked with whose threads I really like, but sadly it's rather > weak at a lot of other things. > > In general, I don't feel that a shared memory model is a good fit for > a high level language. I'm very much a proponent of message passing. > Unlike shared memory, it's actually easier to do the right thing than > not. Implementing it correctly and efficiently is not easier than > doing a shared memory system though in my experience (I'm busy > implementing it on top of ithreads; yeah I'm masochist like that). > > > And we also need to stand back a little further and ask: is "threading" > > the right approach at all? Do threads work in *any* language? Are there > > better metaphors? > > > > Perhaps we need to think more Perlishly and reframe the entire question. > > Not: "What threading model do we need?", but: "What kinds of non-sequential > > programming tasks do we want to make easy...and how would we like to be > > able to specify those tasks?" > > I agree. I would prefer implicit over explicit concurrency wherever possible.
I know you're speaking about the Perl interface to concurrency, but you seem to contradict yourself because message passing is explicit whereas shared memory is implicit - two different models, both of which could be used together to implement a pretty flexible system. It'd be a shame to not provide a way to both use threads directly or to fallback to some implicitly concurrent constructs. Brett -- B. Estrade <estr...@gmail.com>