php-doc-en/reference/pht/hashtable/lock.xml
2018-02-24 11:12:03 +00:00

95 lines
2.2 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="pht-hashtable.lock" xmlns="http://docbook.org/ns/docbook" xmlns:xlink="http://www.w3.org/1999/xlink">
<refnamediv>
<refname>pht\HashTable::lock</refname>
<refpurpose>Acquires the hash table's mutex lock</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<modifier>public</modifier> <type>void</type><methodname>pht\HashTable::lock</methodname>
<void />
</methodsynopsis>
<para>
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.
</para>
<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.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
&no.function.parameters;
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
No return value.
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>Locking a hash table's mutex lock</title>
<programlisting role="php">
<![CDATA[
<?php
use pht\{Thread, HashTable};
$thread = new Thread();
$hashTable = new HashTable();
$thread->addFunctionTask(function ($hashTable) {
$hashTable->lock();
$hashTable['a'] = 1;
$hashTable->unlock();
}, $hashTable);
$thread->start();
// $hashTable is currently being used by multiple threads
$hashTable->lock();
$hashTable['b'] = 2;
$hashTable->unlock();
$thread->join();
]]>
</programlisting>
</example>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->