#c #multithreading #lua
#c #многопоточность #lua
Вопрос:
У меня есть программа на c .Он содержит несколько функций и хорошо работает на c . Теперь я хочу написать встроенную программу на lua / c , чтобы помочь тестировщикам (иногда они не знают программирования) протестировать функции.Даже не состоит из разных перестановок и комбинаций функций, но также будет использовать многопоточность. Например, функции вызываются как ABCD или BACD, DCBA… Последовательности неопределенны.Им нужно настроить параметры для каждой функции. И иногда для одновременного запуска требуется два или более потоков.
Каждый сценарий lua содержит бесконечный цикл, и я хочу запускать их одновременно.Как я мог сделать?
lua_State *L;
L = luaL_newstate();
luaopen_base(L);
luaL_setfuncs(L, mylib, 0);
luaL_dofile(L, "test1.lua"); // start thread1
luaL_dofile(L, "test2.lua"); // start thread2
return 0;
Комментарии:
1. Создайте отдельный
lua_State
для каждого теста и запустите их параллельно.2. Большое спасибо. Я открыл несколько потоков на c , каждый поток создает состояние и dofile, это работает очень хорошо.
3. Есть ли какое-либо решение для совместного использования данных между двумя потоками?
4. Выберите какой-нибудь механизм для передачи данных между потоками на обычном C , затем напишите для него несколько оболочек Lua.
5. Вы можете сериализовать данные Lua, передать их в другой поток (используя код C) и десериализовать их. Посмотрите также на lualanes