Markus Peter wrote:

> > 6: release all mutexes when leaving it for
> > any reason (and redoing 2 through 4 on reentry)

these reasons would include doing subroutine calls.


Which makes data loss possible, without explicit mutexes
on check points and if we've got those why bother with
implied ones?


 
> Wouldn't this strategy not also need to track all subs called from within
> the expression to work? If not, the following thing could happen
> 
> > The problem is, as long as expressions can be within each other,
> > and include terms that are multiple expressions, a robust deadlock
> > avoidance strategy is required even with cooperative threading.
> >
> > Or you can just pass the buck to the programmer, and make them use
> > explict mutexes and deadlocks while they learn.
> 
> Hmm.. I fear the interpreter can never do more than to garantuee that
> certain instructions like $a=1; are atomic which could be a hard enough
> task to implement for some statements. I don't think anyone has yet found
> solutions for automatic deadlock avoidance which still allows your program
> to run at acceptable speeds.

That's what I was suggesting.  And if you say $a = 1 + foo() you have
to give up your mutex on $a before calling foo().  So the programmer
would have to work these things out with the subroutines:


        foo_lock();
        my $b = foo();
        $a = 1 + $b;
        foo_unlock();






-- 
                          David Nicol 816.235.1187 [EMAIL PROTECTED]
                 safety first: seat-belt wearers for Nader in 2000

Reply via email to