2012-09-11 26 views
2

我正在研究一個應用程序,該程序涉及使用雙絞線API通過tcp獲取數據。 我們的過程是偵聽器應用程序,保持監聽事件,並執行以下..單獨線程上的雙絞線調用

  1. 處理事件通知,並建立字典發送到第三方應用
  2. 爲了完成dictionary..it調用過程使用扭曲的API獲取一些額外的數據並完成字典。

後其他單execution..reactor停止,主線程沒有進一步的進展情況,我不能上執行主線程API絞處決..

我要的是:

  1. 每個事件通知---假脫機一個新的線程通過tcp進行一個扭曲的調用來獲取數據。
  2. 加入mainThread與newThread等待其完成
  3. 獲得結果,合併半建字典並將其發送給第三方應用程序。

讓我們說,我聽eventObj1在主線程---

處理包括對前第一步步驟---第二步---第三步---第四步 - 向甲方。

假設第4步涉及通過tcp獲取數據,我們應該等到結果可用之後才能完成字典並將其發送給第三方。

從而eventObj1來了,我也排隊取爲通過TCP ..而這樣做,所以我說reactor.start()(反應器在主線程啓動)和一段時間後,我得到的數據,並調用回調函數字典,是爲事件1併發送給第三方。

和,但我不能排隊數據獲取更多事件,直到我做reactor.stop() ..because直到reactor.stop()不叫主線程不能回去處理eventObj2 ..

因此,我認爲,是什麼我需要在單獨的線程中啓動reactor ...並在主程序退出之前保持主線程停止反應堆的排隊事件

+2

目前尚不清楚爲什麼你需要線程在你的情況。哪些部分強制使用線程?上面提到的所有東西聽起來都完全可以在主線程中使用扭曲的API和延遲來實現。 –

+0

你不想使用線程。你的程序只是有一個bug。反應堆不會自行停止。請附上您遇到問題的http://sscce.org。 – Glyph

回答