загружает скрипты, делая проверки. После этого мне нужно создать несколько копий этого объекта, чтобы у каждого был свой lua_state. Это нужно для создания пула потоков. Можно ли как-нибудь скопировать весь lua_state, не загружая каждый раз заново скрипты?
Не думаю. Делай обычное создание стейта в каждом потоке.
Ну, ты ведь не планируешь создавать миллиарды потоков в секунду и точно так же удалять? Поток будет создан, после чего как минимум несколько секунд будет крутиться прежде чем быть освобождённым? Если так то можно смело подгружать скрипты. Это раз. Два — при очень большом желании, можно организовать кеш скриптов с диска в памяти. Работает только с текстом скриптов — ты такой считываешь текст скриптов в кеш, пробрасываешь его в тот или иной поток (с мутексами, как положено, или копированием в луёвый буфер конкретной машины), и на месте делаешь аналог loadstring в package.loaded. Это чисто для того чтобы меньше грузить диск. Но ты не сможешь просто так взять и очистить этот кеш. С кешами вообще некоторые забавные проблемсы.
Да, у меня будет создаваться несколько потоков, загружать скрипты и потом перемалывать входящие данные. То есть загрузка будет один раз при старте, ну, потом может при обновлении самих скриптов перезагрузить их надо будет
Обсуждают сегодня