Thread-2.00 > Thread::Queue

名前

Thread::Queue - スレッドセーフなキュー(待ち行列)

概要

    use Thread::Queue;
    my $q = new Thread::Queue;
    $q->enqueue("foo", "bar");
    my $foo = $q->dequeue;    # "bar"はまだキューの中にある。
    my $foo = $q->dequeue_nb; # "bar"を返す。キューが空ならundefを返す。
    my $left = $q->pending;   # キューの中に存在する要素の数を返す。

説明

A queue, as implemented by Thread::Queue is a thread-safe data structure much like a list. Any number of threads can safely add elements to the end of the list, or remove elements from the head of the list. (Queues don't permit adding or removing elements from the middle of the list).

Thread::Queueによって実装されるキュー(待ち行列)はリストによくにた スレッドセーフなデータ構造である。任意の数のスレッドが安全にリストの 最後に要素を付け加えたり、先頭から要素を取り除いたりすることができる (リストの中間部に対して加えたり取り除いたりするとこは出来ない)。

関数とメソッド

new

The new function creates a new empty queue.

new関数は新規の空のキューを生成する。

enqueue LIST

The enqueue method adds a list of scalars on to the end of the queue. The queue will grow as needed to accommodate the list.

enqueueメソッドはキューの最後にスカラーのリストを付け加える。 リストに応じてキューは成長する。

dequeue

The dequeue method removes a scalar from the head of the queue and returns it. If the queue is currently empty, dequeue will block the thread until another thread enqueues a scalar.

dequeueメソッドはキューの先頭からスカラーを取り除き、それを返す。 キューが空のとき、dequeueは他のスレッドがスカラーをenqueueする までブロックする。

dequeue_nb

The dequeue_nb method, like the dequeue method, removes a scalar from the head of the queue and returns it. Unlike dequeue, though, dequeue_nb won't block if the queue is empty, instead returning undef.

dequeue_nbメソッドはdequeueメソッドのように、キューの先頭から スカラーを取り除く。だがdequeueと違って、dequeue_nbはキューが 空でもブロックしない。代わりにundefを返す。

pending

The pending method returns the number of items still in the queue.

pendingメソッドは、まだキューに入っている要素の数を返す。

SEE ALSO

threads, threads::shared