2012-07-04 23 views
3

我想創建一個通用模塊,收集數據在不規則間隔。一旦新數據到達,數據從左端到達。這可能是每秒100次。一個「時間通」模塊

在右端,我希望能夠「插入」n個聽衆,每個聽衆都有自己的定期間隔。爲簡化起見,我們假設所有的時間間隔爲每秒一次。

每個監聽器都會註冊一個回調函數,該函數可能是也可能不是異步的。

我的問題是,如果回調函數是同步的,我的「時間通過」可能會掛起。解決這個問題的最好方法是什麼?我是否應該產生一個純粹的目的是傳遞數據並在回調掛起時支付價格的流程?

  +-------------+ Data Out 1 
=======> |Temporal Pass| ==========> 
Data In +-------------+ \\ Data Out 2 
          ++=======> 
          \\ Data Out n 
          ++=======> 
+0

不錯的簡潔的ASCII圖! –

+0

@JarrodRoberson謝謝! :) –

回答

4

爲該消息生成一個新進程,否則該進程將等待,直到完成同步調用。這正是流程模型要解決的問題,我沒有看到任何其他的解決方法。

產卵過程並不昂貴,但也不完全免費。僅通過爲同步調用生成新進程,您可能會獲得較小的性能提升。這將需要某種方式將每個回調標記爲同步或異步。

+0

是的,這也是我的直覺。謝謝。 –