Функции обратного вызова не вызываются одновременно?

Страницы: 1
RSS
Функции обратного вызова не вызываются одновременно?, Т.е. отследить изнутри OnTrade выполнение другого OnOrder невозможно?
 
Допустим у меня есть заявка. Я хочу сразу, как только она сработает, прямо из функции OnTrade создать новую заявку. Чтобы убедиться, что заявка принята успешно, я дожидаюсь выполнения функции OnOrder, которая должна присвоить значение глобальной переменной. Т.е. схематично код выглядит так:

OnTrade(trd)
  somevariable = false
  ord = ....
  sendTransaction(ord)
  repeat sleep(100) until somevariable=true

OnOrder(ord)
  somevarialbe = true

Этот код не работает, т.к. функция OnTrade виснет в ожидании OnOrder, а OnOrder не вызывается, пока не завершится OnTrade (проверял, если в OnTrade поставить return после нескольких итераций цикла, OnOrder сразу вызывается)

Т.е. отследить изнутри OnTrade успешное выполнение новой заявки невозможно?
 
Все функции обратного вызова работают в одном потоке, поэтому пока не завершится один не будут вызваны остальные. Проверяйте этот флаг в main.  
 
Ни в коем случае нельзя делать sleep внутри колбэков квика, они работают в том же потоке, что и сам квик. Ожидание событий должно быть в main.
Страницы: 1
Читают тему
Наверх