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