<h2 >The <code>upc_memget</code> function   </h2>

<h4>Synopsis</h4>
<p>

<pre> 
    #include &lt;upc.h&gt;
    void upc_memget(void * restrict dst, 
                    shared const void * restrict src, 
                    size_t n);
                    
</pre>

<p>
<h4>Description</h4>

<p>
The <code>upc_memget</code>    function  copies n characters from a shared object with affinity
to any single thread to an object on the calling thread.
<p>The <code>upc_memget</code> function treats the <code>src</code> pointer as if it had type:
<pre>
    shared [] char[n]
    </pre>
The effect is equivalent to copying the entire contents from one shared array
object with this type (the <code>src</code> array) to an array object (the <code>dst</code> array)
declared with the type
<pre>
    char[n]
</pre>


<p>&nbsp
<p>&nbsp
<p><a href="terms.html">Terms, definitions, and symbols</a><br>
<p><a href="index.html">Back to index of all UPC functions</a>
