SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.

Страницы: 1
RSS
SetUpdateCallbackcallback в Lua C api - перезаписывает заказы.
 
SetUpdateCallbackcallback в Lua C api - перезаписывает заказы:

Из скрипта квика вызывается Сищная-функция: в нее соответственно автоматически передается или создается Lua-Стек:  


Код
int my_callback(lua_State* L)
{
//Доп.пераметры извелкаем через lua_upvalueindex.

std::cout<<"interval_int:" <<interval_int <<std::endl;
}



void my_call_CreateDataSource(lua_State* L_, name_class_insrument, name_code_paper, interval_int)
{
lua_getglobal(L, "CreateDataSource");          

lua_pushstring(L,_ name_class_insrument);    
lua_pushstring(L_, name_code_paper);        
lua_pushnumber(L_, interval_int);                

int status_lua_pcall = lua_pcall(L, 3, 2, 0); 



my_call_SetUpdateCallback(L_, my_callback, name_class_insrument, name_code_paper, interval_int);    //Вызываем SetUpdateCallback и передаем в нее функцкиб обратного вызова и доп.параметры.
}


int ruc_cpp(lua_State* L_main)
{



lua_State* L_1 = lua_newthread(L_main);       //Создаю "поток" связанный с главным стеком.
lua_State* L_2 = lua_newthread(L_main);


my_call_CreateDataSource(L_1 , "TQBR", "GAZP", "INTERVAL_H2");
my_call_CreateDataSource(L_2 , "TQBR", "GAZP", "INTERVAL_H4");






    //-----------------------------------------------
    for (int i = 0; i < 1000000; i++)
    {
        std::this_thread::sleep_for(std::chrono::milliseconds(100)); 
    }
    //-----------------------------------------------
}


Приведенный код частично условный, чтобы не загромождать кодом страницу.

Но суть в том, что - я создаю два новых "потока" от главного Луа-стека:
-Вызываю для каждого из двух созданных "потоков" - функцию CreateDataSource и навешиваю колбек через SetUpdateCallback.
-Первый и примерно второй и третий - колбеки - выводят интервал "INTERVAL_H2" - то есть это тот интервал, который я запросил первым у CreateDataSource...
-НО! Как только вызывается второй CreateDataSource для второго "потока" и навешивается callback - после этого любой вызываемый callback приходит только с интервалом "INTERVAL_H4" - что соотвевует второму вызову CreateDataSource - ТО ЕСТЬ произошло, как бы затирание подписки на колбек...
-НО ПОЧЕМУ ? Ведь я создал два разных "потока" которые хоть и связаныс основным луа-стеком, но сами обладают свои стеком, в который я и записываю результа от CreateDataSource.

Что то не понятно.
 
Quikos, Да потому, что ГОВНО этот CreateDataSource! Концептуально, идеологически, алгоритмически, фактически, и вообще относится к разделу "Функции для работы с графиками". Что Вы вообще хотите узнать, наплодив чуть не половину новых веток за последнюю неделю-две? У Вас на 34 сообщения12 новых тем! Хотите получить работающий скрипт? Забудьте про это говно - с ним Вы не получите его НИКОГДА! Хотите поисследовать глюки Квика? Исследуйте на здоровье, только крайне желательно в ОДНОЙ ветке - я полагаю, что эта тема бесконечна и мало интересна кому-то, кроме Вас. Ещё что-то?
 
Цитата
Владимир написал:
Quikos, Да потому, что ГОВНО этот CreateDataSource! Концептуально, идеологически, алгоритмически, фактически, и вообще относится к разделу "Функции для работы с графиками". Что Вы вообще хотите узнать, наплодив чуть не половину новых веток за последнюю неделю-две? У Вас на 34 сообщения12 новых тем! Хотите получить работающий скрипт? Забудьте про это говно - с ним Вы не получите его НИКОГДА! Хотите поисследовать глюки Квика? Исследуйте на здоровье, только крайне желательно в ОДНОЙ ветке - я полагаю, что эта тема бесконечна и мало интересна кому-то, кроме Вас. Ещё что-то?
Ну согласен, тем наплодил не мало :)
Но справедливости ради, в самом Lua скрипте - который непосредственно в квике запускаю - перезаписи не наблюдаю. А вот в Lua C api - наблюдаю.

Думал, может кто сталкивался.
 
Цитата
Владимир написал:
Quikos, Хотите получить работающий скрипт? Забудьте про это говно - с ним Вы не получите его НИКОГДА!
Ну хотелось бы конечно. А еще больше хотелось бы конечно нормальное API, но это из разряда фантастики конечно.
 
Quikos, У меня почти сразу не осталось ни малейших сомнений, что писать нужно на чистом Луа, который я в тот момент вообще в глаза не видел, а не на моём любимом Си, на котором я программирую десятки лет. Чуть позже я понял, что всё, что можно, нужно делать в потоке мейна. Ну и, наконец, завёл три стека для буферизации обмена данными с Квиком, после чего почти все проблемы исчезли - надеюсь, навсегда. Хотя появления новых версий боюсь ещё больше, чем раньше.
 
Цитата
Quikos написал:
Но справедливости ради, в самом Lua скрипте - который непосредственно в квике запускаю - перезаписи не наблюдаю. А вот в Lua C api - наблюдаю.
Раз в скрипте Lua не наблюдается, со стороны поддержки QUIK считаем вопрос закрытым
Страницы: 1
Читают тему (гостей: 1)
Наверх