2017-01-07 18 views
0

我是事件驅動的編程範例的新手,並且正在閱讀有關Twisted的內容。如果Twisted的反應器阻塞時發生定時事件會發生什麼?

大約在反應堆這個問題, How does Python's Twisted Reactor work?

timeout = time_until_next_timed_event() 
events = wait_for_events(timeout) 
events += timed_events_until(now()) 

邏輯上不會有是那裏timeout = time_until_next_timed_event()被計算爲12 Hours的情景,並event = wait_for_events(timeout)只是等待12 Hours,因爲沒有外部觸發發生,它只是錯過服務任何timed_events_until(now())事件理想情況下它可能有?這不是妥協嗎?

我很確定我錯過了一些東西,任何人都可以從邏輯的角度澄清這一點?

回答

2

如果下一次計時事件是從現在開始的12小時,那麼根據定義,它將是12小時,直到timed_events_until(now())返回任何事件。

+0

感謝您的回答!所以你的意思是在這個系統中沒有任何**內部**(除了它正在監控的外部**之外的任何東西**),可以觸發**定時**事件,因爲它是**單線程**和* *只有**正在做的工作是**等待**外部輸入?那麼這一切都是有道理的。有可能這些外部事件之一可能導致定時事件,但這將作爲**下一個循環的一部分**,因此也很好。希望我的問題有道理。請讓我知道你的想法。 – Nishant

+0

問一個問題的另一種方式是,在這樣的系統中,不會有任何等待事件發生,而您等待 - 如果不是原因?是否因爲唯一可以做任何事情是基於外部事件(通常服務器是由客戶端驅動的)。 – Nishant

+1

我們知道下一次計時事件何時會發生(這是「計時」的意思,它發生在特定時間)。這就是我們睡了多久。你爲什麼不通過早間會議睡覺?因爲在你入睡之前,你會在第二天看到你的日曆,並設置你的鬧鐘在適當的時候關閉。我認爲這比你想的要簡單:-) –

相關問題