2012-09-11 6 views
2

Я работаю над приложением, которое включает в себя выборку данных по tcp с использованием скрученного api. Нашего процесс является слушатель приложением, которое позволяет слушать события и делает следующее ..вызовы скрученного реактора в отдельной строке

  1. процесса уведомления о событиях и создать словарь, послал его к применению третьей стороны
  2. Для завершения dictionary..it вызывает процесс используя скрученный api, чтобы получить дополнительные данные и завершить словарь.

Я не могу выполнить витые Api расстрелы на основном потоке еще после одиночных остановок execution..reactor и основного потока не происходит никакого дальнейшего прогресса ..

Что я хочу:

  1. для каждого Уведомление о событии --- обмотайте новый поток, чтобы сделать скрученный вызов tcp для получения данных.
  2. присоединяйтесь к mainThread с newThread, чтобы дождаться его завершения
  3. получить результаты, слить с помощью слова со встроенным словарем и отправить его стороннему приложению.

Пусть говорят, я слушаю eventObj1 в основном потоке ---

обработка включает шаги для экс step1 --- step2 --- step3 --- step4 - отправить к партии.

Предположим, что step4 включает в себя получение данных по tcp, и мы должны подождать, пока не будут доступны результаты, прежде чем мы сможем закончить словарь и отправить его третьей стороне.

так eventObj1 приходит я его в очередь для извлечения через TCP .. делая так я говорю reactor.start()(реактор запущен в основном потоке) и через некоторое время я получаю данные и обратный вызов ДИКТ построен для event1 и отправить третьим лицам.

и, но я не могу стоять в очереди больше никаких событий для выборки данных, пока я не сделаю reactor.stop() ..because до reactor.stop() не называется основной поток не может вернуться к обработке eventObj2 ..

Так что я думаю, то, что Мне нужно запустить реактор в отдельной нити..и держать очереди с событиями от главного реактора остановки нити до выхода основной программы

+2

Непонятно, зачем нужны потоки в вашем случае. Какая из частей заставляет использовать нитки? Все то, что вы упомянули выше, звучит полностью в главном потоке, используя скрученный API и отложенные. –

+0

Вы не хотите использовать потоки. В вашей программе просто есть ошибка. Реактор не останавливается сам по себе. Пожалуйста, приложите http://sscce.org к проблеме, которую вы испытываете. – Glyph

ответ

Смежные вопросы