Jim LaGrone wrote:
> If I have the following:
>
> arry = Array.makeVar[type](region, ((p):Point => new type());
> finish foreach( i in dist ){
>       ...loop... stuff
> }
>
>   
Here is what the above piece of code does. It creates a single array, 
arry, with one point for each region, initialized with an execution of 
new type().

Each array element is mutable and is shared between all activities that 
can access arry.

> how does is change with the array creation inside the loop?
>
> finish foreach( i in dist ){
>       arry = Array.makeVar[type](region, ((p):Point => new type());
>       ...loop... stuff
> }
>
>   
This, on the other hand, creates an activity for each i in dist. All 
these activities run simultaneously.

Each activity creates an array and assigns it to arry.

Now how is arry declared? For the above code to compile, arry has to be 
declared to be a local variable within the foreach loop, i.e. the code 
has to look like

finish foreach( i in dist ){
        val arry = Array.makeVar[type](region, ((p):Point => new type());
        ...loop... stuff
}

In this case arry is going to stay private to each activity generated by 
the foreach -- unless and until the code in the body of the loop lets it 
escape (e.g. by assigning arry to the field of an object shared with 
some other activities).

Hope this helps.

Best,
Vijay




------------------------------------------------------------------------------
Return on Information:
Google Enterprise Search pays you back
Get the facts.
http://p.sf.net/sfu/google-dev2dev
_______________________________________________
X10-users mailing list
X10-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/x10-users

Reply via email to