[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Are lua_State's thread safe?
- From: Eric Scouten <scouten@...>
- Date: Wed, 14 Dec 2005 12:19:49 -0800
Yes, given this caveat, you can use the same lua_State from multiple
threads. However, you may not want to.
The most obvious path to being thread-safe is to redefine lua_lock and
lua_unlock in llimits.h. Our experience suggests that while correct,
this is a bad idea. You'll spend way too much time in the OS mutex code.
(This was observed on MacOS. The threading implementation is based on
pthreads, so we would expect similar results on many *nix flavors.)
In order for multi-threading to work with Lua, you should either find a
relatively course-grained lock/unlock bottleneck or simply use different
Lua universes (i.e. lua_States that aren't related to each other).
Dolan, Ryanne Thomas (UMR-Student) wrote:
You will have to use synchronization techniques such as mutexes to keep
different threads from accessing the lua_State at the same time, or else
you will get unexpected results and crashes.
Really you will need to keep threads from accessing your LuaManager
object at the same time also for the same reasons. Anytime a shared
variable is manipulated by different threads you need to use
[mailto:email@example.com] On Behalf Of John Klimek
Sent: Wednesday, December 14, 2005 12:28 PM
To: Lua list
Subject: Are lua_State's thread safe?
I'm wondering if I can create a single object (lets call it
LuaManager) with a method called RunScript and then have several
socket threads share the same object which is sharing the same
Is this possible? Is it safe?
Eric Scouten | firstname.lastname@example.org | Photography: www.ericscouten.com