On Tue, Jun 14, 2011 at 8:48 AM, Andreas Zwinkau <zwin...@kit.edu> wrote:
> I want have an Activity A blocked, which is unlocked by another Activity
> B. How do i do this?
>
> I cannot use a Lock, because they work on Threads not Activities. Hence,
> if B is not accidentally executed by the same worker thread as A, then
> an exception is thrown.

Hi, Andreas,

The construct you're looking for is a conditional atomic section ("when").
The pattern could be something like this:

finish {
    val sync = new Cell[Boolean](false);
    async { // A
        Console.ERR.println("A: Locking");
        when (sync()) { Console.ERR.println("A: Unlocked"); }
    }
    async { // B
        System.sleep(1000);
        Console.ERR.println("B: Unlocking A");
        atomic { sync() = true; }
    }
}

Note that the "atomic" in B is needed for the update to be seen by A.

Hope this helps,
        Igor

------------------------------------------------------------------------------
EditLive Enterprise is the world's most technically advanced content
authoring tool. Experience the power of Track Changes, Inline Image
Editing and ensure content is compliant with Accessibility Checking.
http://p.sf.net/sfu/ephox-dev2dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to