(PECL ev >= 0.2.0)
EvPrepare 和 EvCheck 觀察器通常成對使用。 EvPrepare 觀察器在行程阻塞之前被呼叫,EvCheck 則在之後被呼叫。
不允許從 EvPrepare 或 EvCheck 觀察器中呼叫 EvLoop::run() 或其他進入當前事件迴圈的類似方法或函式。然而,呼叫其他非當前事件迴圈則是可以的。其背後的原因是,在這些觀察器中不需要檢查遞迴,也就是說,順序將始終是:EvPrepare -> 阻塞 -> EvCheck,因此,若有每種類型的一個觀察器,它們將始終成對呼叫,將阻塞呼叫括起來。
主要目的是將其他事件機制整合到 *libev* 中,它們的使用方式有些進階。例如,它們可以用於追蹤變數變化、實作自定義觀察器、整合 net-snmp 或協程庫等等。它們偶爾也可用於快取一些資料,並希望在阻塞之前將其清空。
建議賦予 EvCheck 觀察器最高優先級 (Ev::MAXPRI
),以確保它們在輪詢後在任何其他觀察器之前運行(這對 EvPrepare 觀察器無關緊要)。
此外,EvCheck 觀察器不應觸發/饋送事件。雖然 *libev* 完全支援此功能,但它們可能會在其他 EvCheck 觀察器完成其工作之前執行。