<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>Acquires the hash table's mutex lock</title> </head> <body><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.pht-hashtable.html">pht\HashTable</a></div> <div class="next" style="text-align: right; float: right;"><a href="pht-hashtable.size.html">pht\HashTable::size</a></div> <div class="up"><a href="class.pht-hashtable.html">pht\HashTable</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div><hr /><div id="pht-hashtable.lock" class="refentry"> <div class="refnamediv"> <h1 class="refname">pht\HashTable::lock</h1> <p class="verinfo">(PECL pht >= 0.0.1)</p><p class="refpurpose"><span class="refname">pht\HashTable::lock</span> — <span class="dc-title">Acquires the hash table's mutex lock</span></p> </div> <div class="refsect1 description" id="refsect1-pht-hashtable.lock-description"> <h3 class="title">Description</h3> <div class="methodsynopsis dc-description"> <span class="modifier">public</span> <span class="type"><span class="type void">void</span></span> <span class="methodname"><strong>pht\HashTable::lock</strong></span> ( <span class="methodparam">void</span> )</div> <p class="para rdfs-comment"> This method will acquire the mutex lock associated with the hash table. The mutex lock should always be acquired when manipulating the hash table if it is being used by multiple threads. </p> <p class="para"> The mutex locks of the Inter-Thread Communication (ITC) data structures are not reentrant. Attempting to reacquire an already-acquired mutex lock by the same thread will therefore cause a deadlock. </p> </div> <div class="refsect1 parameters" id="refsect1-pht-hashtable.lock-parameters"> <h3 class="title">Parameters</h3> <p class="para">This function has no parameters.</p> </div> <div class="refsect1 returnvalues" id="refsect1-pht-hashtable.lock-returnvalues"> <h3 class="title">Return Values</h3> <p class="para"> No return value. </p> </div> <div class="refsect1 examples" id="refsect1-pht-hashtable.lock-examples"> <h3 class="title">Examples</h3> <p class="para"> <div class="example" id="example-4552"> <p><strong>Example #1 Locking a hash table's mutex lock</strong></p> <div class="example-contents"> <div class="phpcode"><code><span style="color: #000000"> <span style="color: #0000BB"><?php<br /><br /></span><span style="color: #007700">use </span><span style="color: #0000BB">pht</span><span style="color: #007700">\{</span><span style="color: #0000BB">Thread</span><span style="color: #007700">, </span><span style="color: #0000BB">HashTable</span><span style="color: #007700">};<br /><br /></span><span style="color: #0000BB">$thread </span><span style="color: #007700">= new </span><span style="color: #0000BB">Thread</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$hashTable </span><span style="color: #007700">= new </span><span style="color: #0000BB">HashTable</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$thread</span><span style="color: #007700">-></span><span style="color: #0000BB">addFunctionTask</span><span style="color: #007700">(function (</span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">) {<br /> </span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">-></span><span style="color: #0000BB">lock</span><span style="color: #007700">();<br /> </span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">[</span><span style="color: #DD0000">'a'</span><span style="color: #007700">] = </span><span style="color: #0000BB">1</span><span style="color: #007700">;<br /> </span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">-></span><span style="color: #0000BB">unlock</span><span style="color: #007700">();<br />}, </span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">$thread</span><span style="color: #007700">-></span><span style="color: #0000BB">start</span><span style="color: #007700">();<br /><br /></span><span style="color: #FF8000">// $hashTable is currently being used by multiple threads<br /></span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">-></span><span style="color: #0000BB">lock</span><span style="color: #007700">();<br /></span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">[</span><span style="color: #DD0000">'b'</span><span style="color: #007700">] = </span><span style="color: #0000BB">2</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$hashTable</span><span style="color: #007700">-></span><span style="color: #0000BB">unlock</span><span style="color: #007700">();<br /><br /></span><span style="color: #0000BB">$thread</span><span style="color: #007700">-></span><span style="color: #0000BB">join</span><span style="color: #007700">();</span> </span> </code></div> </div> </div> </p> </div> </div><hr /><div class="manualnavbar" style="text-align: center;"> <div class="prev" style="text-align: left; float: left;"><a href="class.pht-hashtable.html">pht\HashTable</a></div> <div class="next" style="text-align: right; float: right;"><a href="pht-hashtable.size.html">pht\HashTable::size</a></div> <div class="up"><a href="class.pht-hashtable.html">pht\HashTable</a></div> <div class="home"><a href="index.html">PHP Manual</a></div> </div></body></html>