Как написать многопоточный сценарий lua или просто позволить нескольким сценариям работать вместе в программе на c

#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