Thread-2.00 > Thread::Semaphore

名前

Thread::Semaphore - スレッドセーフなセマフォ

概要

    use Thread::Semaphore;
    my $s = new Thread::Semaphore;
    $s->up;     # V操作としても知られる
    # The guarded section is here
    $s->down;   # P操作としても知られる

    # 規定値は1
    my $s = new Thread::Semaphore($initial_value);
    $s->up($up_value);
    $s->down($up_value);

説明

Semaphores provide a mechanism to regulate access to resources. Semaphores, unlike locks, aren't tied to particular scalars, and so may be used to control access to anything you care to use them for.

セマフォはリソースに対するアクセスを調整するメカニズムを提供する。ロックと違い、セマフォは特定のスカラーに結びついていない。それゆえ、あなたが使用したいと思うどんなものに対しても、アクセス制御に利用できるだろう。

Semaphores don't limit their values to zero or one, so they can be used to control access to some resource that there may be more than one of. (For example, filehandles). Increment and decrement amounts aren't fixed at one either, so threads can reserve or return multiple resources at once.

セマフォはその値をゼロか1かに制限しない。だから一つ以上あるようなリソース(例えばファイルハンドル)に対するアクセス制御に使うことが出来る。増加減少の値は1に固定されてもいないので、スレッドは同時に複数のリソースを確保したり返したりすることができる。

関数とメソッド

new
new NUMBER

new creates a new semaphore, and initializes its count to the passed number. If no number is passed, the semaphore's count is set to one.

newは新しいセマフォを生成し、与えられた数にカウンタを初期化する。数を与えなければ、セマフォのカウンタには1がセットされる。

down
down NUMBER

The down method decreases the semaphore's count by the specified number, or by one if no number has been specified. If the semaphore's count would drop below zero, this method will block until such time that the semaphore's count is equal to or larger than the amount you're downing the semaphore's count by.

downメソッドはセマフォのカウンタを指定された数だけ減少させる。数が指定されていなければ1減少させる。もしセマフォのカウンタが0より小さくなるなら、このメソッドはカウンタがdownで減少させる分と同じかそれ以上の値になるまでブロックする。

up
up NUMBER

The up method increases the semaphore's count by the number specified, or by one if no number has been specified. This will unblock any thread blocked trying to down the semaphore if the up raises the semaphore count above the amount that the downs are trying to decrement it by.

upメソッドはセマフォのカウンタを指定された数だけ増加させる。数が指定されていなければ1増加させる。もしupがセマフォのカウンタをdownが減少させる値より大きくするなら、downを試みてブロック状態になっているスレッドはブロックが解除される。