(PECL ev >= 0.2.0)
はじめに
EvPrepare ウォッチャーと EvCheck ウォッチャーは、 通常はペアで使います。 EvPrepare ウォッチャーはプロセスをブロックする前に起動し、 EvCheck はブロックした後に起動します。
EvLoop::run() あるいはそれに類するメソッドや関数 (現在のイベントループに入るもの) は、EvPrepare ウォッチャーや EvCheck ウォッチャーからは呼べません。 現在のループ以外のループは問題ありません。 その理由は、これらのウォッチャーの中では再帰をチェックする必要がないからです。 つまり、処理の流れは常に EvPrepare -> ブロック -> EvCheck となるので、これらのウォッチャーは常にペアで呼ばれ、ブロッキング呼び出しの前後を囲むことになります。
主な利用目的は他のイベント機構を libev に統合することで、 少し高度な使いかたになります。変数の変更を追跡したり 自前のウォッチャーを実装したり、net-snmp やコルーチンライブラリを統合したりといった、 さまざまな用途で使えます。 また、何らかのデータをキャッシュしてブロッキングの前にフラッシュするなどの用途で使えることもあります。
EvCheck には最高の優先度
(Ev::MAXPRI
) を与えることを推奨します。
これで、ポーリングの後は他のあらゆるウォッチャーよりも先に実行されることが保証されます
(EvPrepare ウォッチャーの場合は無鐘鋳です)。
また、EvCheck ウォッチャーはイベントをアクティブにしたり送信したりしてはいけません。 libev では対応してはいますが、 他の EvCheck ウォッチャーが仕事をする前に実行される可能性があります。
クラス概要
EvCheck extends EvWatcher {
public
$is_active
public
$data
public
$is_pending
public
$priority
/* メソッド */
public
__construct
(
callable
$callback
[,
mixed
$data
[,
int
$priority
]] )
final
public
static
createStopped
(
string
$callback
[,
string
$data
[,
string
$priority
]] ) : object
/* 継承したメソッド */
public EvWatcher::clear ( ) : int
abstract public EvWatcher::__construct ( )
public
EvWatcher::feed
(
int
$revents
) : void
public EvWatcher::getLoop ( ) : EvLoop
public
EvWatcher::invoke
(
int
$revents
) : void
public
EvWatcher::keepalive
([
bool
$value
] ) : bool
public
EvWatcher::setCallback
(
callable
$callback
) : void
public EvWatcher::start ( ) : void
public EvWatcher::stop ( ) : void
}
目次
- EvCheck::__construct — EvCheck ウォッチャーオブジェクトを作る
- EvCheck::createStopped — 停止した EvCheck ウォッチャーのインスタンスを作る
/* 継承したプロパティ */