lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 28 August 2016 at 19:57, Marc Balmer <marc@msys.ch> wrote:
> Does someone on this list have experience with running Lua in a threaded environment?
>
> I am thinking about the following scenario:
>
> - A main thread creates a Lua state and uses it the usual way using the C API.
> - A secondary thread should call a function in said Lua state from time to time,
> asynchronously and not predictable when it will do so. Totally independent from
> the main thread.
>
> It's obvious that this will not work and that some sort of arbitration will be needed.  As
> I understand, there is no locking at all in Lua, and not even a function to query if a
> Lua state is currently executing Lua code, i.e. if another thread is running the Lua
> interpreter.
>
> What's the best approach to this?  I think I will have to add a locking mechanism
> and aquire the lock before calling any of the Lua C API functions.  Are there better
> ways?
>
>

Yes.

Alternatively, you can define lua_lock and lua_unlock to use some sort
of mutex (when you compile lua)