On 29.03.2018 11:28, Laurent
FAILLIE wrote:
If I correctly understood, it's
still not OS native threading isn't it ? But
co-routines with some code to secure and
makes their management easier, isn't it ?
Yes and no. I don't use OS threading to schedule the Lua
threads. All Lua threads run in one C thread.
On the other hand, I would not call them co-routines
anymore as the scheduler I implemented is preemptive.
But I'm thinking of another
solution :
* A main Lua State that will
only parse Lua source code and potentially
run some initialization code before thread
are launched.
* Then I create sub State using
lua_newthread() and the
corresponding State will be attached to a
new OS thread.
As a consequence, all
thread/State will share the same global
objects (that will solve my issue about
strings comparison I have will
lua_newstate() ) but can run TOTALLY
concurrently.
What to you think about this approach ? Even if
slave States are not expecting to modify any
global objects, do you think it is worth to
implement lua_lock
and lua_unlock
?
Thanks
Laurent
I can't give you a final answer as I never tried to use
multiple C threads on the same global Lua state.
As far as Lua 5.1 and Lua 5.2 goes I came to the
conclution, that Lua runs in the locked state for most of
the time and therfore you wont be able to run the
co-routines totally concurrently.
I would actually be interested in that approach, if
someone has some experience with it.
--
Thomas