1

Тема: Квик ПАДАЕТ от простейшего кода

Квик ПАДАЕТ от простейшего кода - тупо ЗАКРЫВАЕТСЯ:

В квике Lua-скрипт:

function main()

Quik_Lua_connector= require("Quik_Lua_connector")    

Quik_Lua_connector.run_Cpp() 

-------------------------
while not stopped do 
sleep(1)
end 
-------------------------
end

То есть из Квика запускаю функцию run_Cpp из .dll:


static int run_Cpp(lua_State* Lua_main) 
{

lua_State* L = lua_newthread(Lua_main);

std::cout << "SIZE_MAIN_STACK:" << lua_gettop(Lua_main) << std::endl;
lua_close(L);            //Квик тупо ЗАКРЫВАЕТСЯ
std::cout << "SIZE_MAIN_STACK:" << lua_gettop(Lua_main) << std::endl;
}

На выполнении строчки кода lua_close(L) - квик просто закрывается и все.

2

Re: Квик ПАДАЕТ от простейшего кода

Решено.

3

Re: Квик ПАДАЕТ от простейшего кода

Как именно решено?
Поделитесь.

4 (2022-10-13 10:35:37 отредактировано Serg_)

Re: Квик ПАДАЕТ от простейшего кода

swerg пишет:

Как именно решено?
Поделитесь.

Решено всмысле - что забил smile
Квик падает - даже, если я создаю новый стек через luaL_newstate() и закрываю его.

Решил просто не закрывать стеки созданные через lua_newthread, а удалять их них все элементы и помещать в очередь для пере-использования.

5 (2022-10-17 14:10:19 отредактировано swerg)

Re: Квик ПАДАЕТ от простейшего кода

Справка по lua_newthread:

There is no explicit function to close or to destroy a thread. Threads are subject to garbage collection, like any Lua object.

Так что lua_close(L) для такого потока делать попросту нельзя.

Замечу, что lua_newthread - это не про потоки в смысле потоков операционной системы. Это про Lua-корутины, которые работают в том же потоке операционной системы.