1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
|
<!-- Generator: GNU source-highlight
by Lorenzo Bettini
http://www.lorenzobettini.it
http://www.gnu.org/software/src-highlite -->
<pre><tt><b><font color="#0000FF">relaxed</font></b> <b><font color="#0000FF">shared</font></b> <font color="#990000">[</font><font color="#993399">5</font><font color="#990000">]</font> <font color="#009900">int</font> <font color="#990000">*</font><b><font color="#0000FF">shared</font></b> shared_ptr_to_shared<font color="#990000">;</font>
<b><font color="#0000FF">strict</font></b> <b><font color="#0000FF">shared</font></b> <font color="#990000">[</font><font color="#993399">5</font><font color="#990000">]</font> <font color="#009900">int</font> y<font color="#990000">[</font><font color="#993399">100</font> <font color="#990000">*</font> THREADS<font color="#990000">];</font>
<b><font color="#0000FF">strict</font></b> <b><font color="#0000FF">shared</font></b> <font color="#990000">[</font><font color="#993399">5</font><font color="#990000">]</font> <font color="#009900">int</font> z<font color="#990000">[</font><font color="#993399">100</font> <font color="#990000">*</font> THREADS<font color="#990000">];</font>
<font color="#009900">int</font> x<font color="#990000">[</font><font color="#993399">100</font><font color="#990000">];</font>
<b><font color="#0000FF">shared</font></b> <font color="#009900">int</font> shared_int<font color="#990000">;</font>
<font color="#009900">int</font> local_int <font color="#990000">=</font> <font color="#993399">99</font><font color="#990000">;</font>
<b><font color="#0000FF">shared</font></b> <font color="#009900">int</font> <font color="#990000">*</font>ptr_to_shared_int<font color="#990000">;</font>
<font color="#009900">int</font>
<b><font color="#000000">main</font></b> <font color="#990000">()</font>
<font color="#FF0000">{</font>
<font color="#009900">int</font> i<font color="#990000">;</font>
<font color="#008080">size_t</font> size<font color="#990000">;</font>
<font color="#009900">upc_lock_t</font> <font color="#990000">*</font>lock<font color="#990000">;</font>
lock <font color="#990000">=</font> <b><font color="#000000">upc_global_lock_alloc</font></b> <font color="#990000">();</font>
<b><font color="#0000FF">upc_barrier</font></b> <font color="#993399">1</font><font color="#990000">;</font>
<b><font color="#0000FF">upc_forall</font></b> <font color="#990000">(</font>i <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font> i <font color="#990000"><</font> <font color="#993399">100</font> <font color="#990000">*</font> THREADS<font color="#990000">;</font> <font color="#990000">++</font>i<font color="#990000">;</font> <font color="#990000">&</font>z<font color="#990000">[</font>i<font color="#990000">])</font>
<font color="#FF0000">{</font>
<font color="#009900">int</font> j<font color="#990000">;</font>
<b><font color="#0000FF">for</font></b> <font color="#990000">(</font>j <font color="#990000">=</font> <font color="#993399">0</font><font color="#990000">;</font> j <font color="#990000"><</font> <font color="#993399">100</font><font color="#990000">;</font> <font color="#990000">++</font>j<font color="#990000">)</font>
<font color="#FF0000">{</font>
<b><font color="#000080">#pragma</font></b> upc <b><font color="#0000FF">strict</font></b>
<b><font color="#0000FF">if</font></b> <font color="#990000">(</font>x<font color="#990000">[</font>i<font color="#990000">]</font> <font color="#990000"><</font> x<font color="#990000">[</font>j<font color="#990000">])</font>
<font color="#FF0000">{</font>
<b><font color="#000000">upc_lock</font></b> <font color="#990000">(</font>lock<font color="#990000">);</font>
z<font color="#990000">[</font>i<font color="#990000">][</font>j<font color="#990000">]</font> <font color="#990000">=</font> x<font color="#990000">[</font>i<font color="#990000">]</font> <font color="#990000">*</font> y<font color="#990000">[</font>j<font color="#990000">];</font>
<b><font color="#000000">upc_unlock</font></b> <font color="#990000">(</font>lock<font color="#990000">);</font>
<font color="#FF0000">}</font>
<b><font color="#0000FF">else</font></b>
<font color="#FF0000">{</font>
<b><font color="#0000FF">upc_fence</font></b><font color="#990000">;</font>
z<font color="#990000">[</font>i<font color="#990000">][</font>j<font color="#990000">]</font> <font color="#990000">=</font> <font color="#990000">-</font>x<font color="#990000">[</font>i<font color="#990000">]</font> <font color="#990000">*</font> y<font color="#990000">[</font>j<font color="#990000">];</font>
<b><font color="#0000FF">upc_fence</font></b><font color="#990000">;</font>
<font color="#FF0000">}</font>
<font color="#FF0000">}</font>
<b><font color="#0000FF">upc_notify</font></b> <font color="#993399">10</font><font color="#990000">;</font>
<b><font color="#0000FF">upc_wait</font></b> <font color="#993399">10</font><font color="#990000">;</font>
<font color="#FF0000">}</font>
size <font color="#990000">=</font> <b><font color="#0000FF">upc_blocksizeof</font></b> <font color="#990000">(</font>z<font color="#990000">);</font>
size <font color="#990000">=</font> <b><font color="#0000FF">upc_localsizeof</font></b> <font color="#990000">(</font>z<font color="#990000">);</font>
size <font color="#990000">=</font> <b><font color="#0000FF">upc_elemsizeof</font></b> <font color="#990000">(</font>z<font color="#990000">);</font>
<b><font color="#000000">upc_lock_free</font></b> <font color="#990000">(</font>lock<font color="#990000">);</font>
<font color="#FF0000">}</font>
</tt></pre>
|