lua-users home
lua-l archive

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


I am not sure if this would work, but you could try using the debug api to interrupt your lua state every n operations and check then a queue if there’s something waiting to get called.

 

Since the debug hook has then interrupted the lua program and is allowed to manipulate it, this might work. It would not work when the lua program is making long lasting native calls, of course...

 

 

Cheers

Eike

 

Gesendet von meinem Windows 10 Phone

 

Von: Marc Balmer
Gesendet: Sonntag, 28. August 2016 11:57
An: Lua mailing list
Betreff: Lua in a threaded enviroment

 

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?