<h2 >The <code>upc_threadof</code> function &nbsp;&nbsp; </h2>

<h4>Synopsis</h4>
<p>
<pre> 
    #include &lt;upc.h&gt;
    size_t upc_threadof(shared void *ptr);                        
</pre>
<p>
<h4>Description</h4>
<p>
The <code>upc_threadof </code>function returns the index of the thread that has affinity
to the shared object pointed to by <code>ptr</code>.
<p>
If <code>ptr</code> is a null pointer-to-shared, the function returns 0.

<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>
