摘要:周期性觀察者的運行模式根據(jù)偏移間隔和重新調(diào)度參數(shù),不同周期的觀察者工作絕對定時器。這并不意味著觸發(fā)器之間總是有秒的時間,但只有當(dāng)系統(tǒng)時間顯示一個完整的小時時才會調(diào)用回調(diào)。它必須根據(jù)傳遞的時間值也就是說,大于或等于第二個參數(shù)的最低時間值。
Periodic watcher operation modes (周期性觀察者的運行模式)
根據(jù)偏移、間隔和重新調(diào)度參數(shù),不同周期的觀察者工作
offset絕對定時器。在此模式中,interval = 0,reschedule_cb = NULL. 這一次只是簡單的觸發(fā)在時鐘時間偏移,不重復(fù)。當(dāng)時間跳躍發(fā)生時,它不會調(diào)整,也就是說,如果它在2014/01/01運行,那么當(dāng)系統(tǒng)時間達(dá)到或超過這個時間時,它將運行。
代碼 執(zhí)行結(jié)果start : 1529568868 w1: enter:1529568877 w1: end:1529568882 w11: enter:1529568888 # 如果我們吧offset都改成改成當(dāng)前時間 再執(zhí)行結(jié)果 start : 1529568995 w11: enter:1529568995 w1: enter:1529568995 w1: end:1529569000interval
重復(fù)間隔定時器。在這種模式offset = 0,reschedule_cb = NULL; 觀察者將總是被安排在下一個偏移量offset + N * interval time(N代表某個整數(shù))超時,然后重復(fù),不管任何時間跳躍。
這并不意味著觸發(fā)器之間總是有3600秒的時間,但只有當(dāng)系統(tǒng)時間顯示一個完整的小時(UTC)時才會調(diào)用回調(diào)。
這可以用來創(chuàng)建不隨系統(tǒng)時間漂移的定時器:
代碼執(zhí)行結(jié)果w2:enter:1529569458 w2:end:1529569458 w3:enter:1529569458 w3:end:1529569458 w3:enter:1529569460 w3:end:1529569460 w2:enter:1529569460 w2:end:1529569460 w2:enter:1529569462 w2:end:1529569462 w3:enter:1529569462 w3:end:1529569462 w3:enter:1529569464 w3:end:1529569464 w2:enter:1529569464 w2:end:1529569464 w2:enter:1529569466 w2:end:1529569466 w3:enter:1529569466 w3:end:1529569466 # 我們注釋w3代碼 并打開w2里的sleep(3)執(zhí)行結(jié)果 # 執(zhí)行體時間 > 間隔時間 # 我們發(fā)現(xiàn)下一次執(zhí)行時間是上一次執(zhí)行完成時間 w2:enter:1529570041 w2:end:1529570046 w2:enter:1529570046 w2:end:1529570051 w2:enter:1529570051 w2:end:1529570056 w2:enter:1529570056 w2:end:1529570061 w2:enter:1529570061 w2:end:1529570066 w2:enter:1529570066 # 我們注釋w3代碼 并打開w2里的sleep(1)執(zhí)行結(jié)果 # 執(zhí)行體時間<=間隔時間 # 我們發(fā)現(xiàn)下一次執(zhí)行時間是正常間隔后執(zhí)行時間 w2:enter:1529570098 w2:end:1529570099 w2:enter:1529570100 w2:end:1529570101 w2:enter:1529570102 w2:end:1529570103 w2:enter:1529570104 # 我們打開w3里的sleep,然后再執(zhí)行結(jié)果 # 某個觀察者間隔時間受執(zhí)行體影響,且多個觀察者會互相影響間隔時間 w2:enter:1529569484 w2:end:1529569484 w3:enter:1529569484 w3:end:1529569487 w3:enter:1529569487 w3:end:1529569490 w2:enter:1529569490 w2:end:1529569490 w2:enter:1529569490 w2:end:1529569490 w3:enter:1529569490 w3:end:1529569493 w3:enter:1529569493 w3:end:1529569496 w2:enter:1529569496 w2:end:1529569496 w2:enter:1529569496 w2:end:1529569496 w3:enter:1529569496總結(jié)如果單個watcher執(zhí)行體時間 > 間隔時間,那么下一次執(zhí)行時間就是執(zhí)行體完成時間
如果單個watcher執(zhí)行體時間 <= 間隔時間,那么下一次執(zhí)行時間就是間隔后執(zhí)行時間
如果多個watcher,各執(zhí)行體的時間相互影響對方EvPeriodic 將嘗試在這種模式下運行回調(diào),在當(dāng)`time = offset ( mod interval )下一個可能的時間,不管任何時間跳躍。
reschedule_cb手動重調(diào)度模式。在這種模式reschedule_cb是可調(diào)用。
間隔和偏移都被忽略了。相反,每次周期性觀察者被調(diào)度時,重新調(diào)度回調(diào)(reschedule_cb)將首先以觀察者的方式調(diào)用,而當(dāng)前時間作為第二個參數(shù)。
這個回調(diào)永遠(yuǎn)不能停止或破壞這個或任何其他周期性觀察者,并且不能調(diào)用任何事件循環(huán)函數(shù)或方法。停止它會先返回1000,再停止。一個EvPrepare觀察者可以用于此任務(wù)。
它必須根據(jù)傳遞的時間值(也就是說,大于或等于第二個參數(shù)的最低時間值。)返回下一次觸發(fā)。它通常會在調(diào)用回調(diào)之前被調(diào)用,但也可能在其他時候被調(diào)用。
代碼執(zhí)行結(jié)果w5:enter:1529638365 w5:end:1529638380 w5:enter:1529638380 w5:end:1529638395 w5:enter:1529638395 w5:end:1529638410 w5:enter:1529638410 w5:end:1529638425 w5:enter:1529638425 w5:end:1529638440 w5:enter:1529638440 w5:end:1529638455 w5:enter:1529638455 w5:end:1529638470 w5:enter:1529638470 w5:end:1529638485 w5:enter:1529638485 w5:end:1529638500 w5:enter:1529638500 w5:end:1529638515 w5:enter:1529638515 # php 5.6 # php --ri ev Ev擴展信息 Ev support => enabled Debug support => disabled Version => 1.0.4 [root@localhost libev]# Version => 1.0.4
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/28881.html
摘要:例如,下面的代碼等待成為可讀的等待直到可讀所有觀察者構(gòu)造函數(shù)會自動啟動觀察者。因此,應(yīng)該保留由構(gòu)造函數(shù)或工廠方法返回的觀察者對象。觀察者回調(diào)傳遞給觀察者構(gòu)造函數(shù)派生于的類等。 Watchers (觀察者) 觀察者是為了記錄某件事而創(chuàng)造的對象。例如,下面的代碼等待STDIN成為可讀的: 所有觀察者構(gòu)造函數(shù)會自動啟動觀察者。createStopped方法創(chuàng)建停止監(jiān)視器(例如 EvIo::...
閱讀 2825·2023-04-25 20:06
閱讀 1446·2021-08-26 14:15
閱讀 2234·2021-08-12 13:27
閱讀 1772·2019-08-30 15:55
閱讀 3469·2019-08-30 13:20
閱讀 2826·2019-08-29 15:12
閱讀 3330·2019-08-29 15:06
閱讀 2858·2019-08-29 14:13