<h2 >The <code>upc_lock_free</code> function   </h2>

<h4>Synopsis</h4>
<p>

<pre> 
    #include &lt;upc.h&gt;
    upc_lock_t *upc_lock_free(upc_lock_t *ptr);                     
</pre>

<p>
<h4>Description</h4>

<p>
The <code>upc_lock_free</code>    function  frees all resources associated with the dynamically
allocated <code>upc_lock_t</code> pointed to by <code>ptr</code>. 
If <code>ptr</code> is a null pointer, no
action occurs. 
Otherwise, if the argument does not match a pointer earlier
returned by the <code>upc_global_lock_alloc</code> or 
<code>upc_all_lock_alloc</code> function,
or if the lock has been deallocated by a previous call to <code>upc_lock_free</code>,
the behavior is undefined.
<p>
<code>upc_lock_free</code> succeeds regardless of whether the referenced lock is currently
unlocked or currently locked (by any thread).
<p>Any subsequent calls to locking functions from any thread using <code>ptr</code> have
undefined effects. This also applies to any thread currently calling <code>upc_lock</code>.
<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>
