(PECL pht >= 0.0.1)
pht\Queue::lock — Acquires the queue's mutex lock
This method will acquire the mutex lock associated with the queue. The mutex lock should always be acquired when manipulating the queue if it is being used by multiple threads.
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.
锟剿猴拷锟斤拷没锟叫诧拷锟斤拷锟斤拷
No return value.
Example #1 Locking a queue's mutex lock
<?php
use pht\{Thread, Queue};
$thread = new Thread();
$queue = new Queue();
$thread->addFunctionTask(function ($queue) {
$queue->lock();
$queue->push(1);
$queue->unlock();
}, $queue);
$thread->start();
// $queue is currently being used by multiple threads
$queue->lock();
$queue->push(1);
$queue->unlock();
$thread->join();
// $queue is only being used in this thread now, so no need to lock it
while ($queue->size()) {
var_dump($queue->pop());
}
锟斤拷锟斤拷锟斤拷锟教伙拷锟斤拷锟斤拷锟�
int(1) int(1)