lua-users home
lua-l archive

Re: Is it possible to run Lua threads in OS threads safely?

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


 > There seem to be a dedicated page on lua-users wiki:
 > http://lua-users.org/wiki/MultiTasking
 > ...
 > - *LuaProc *seems to be the official tool from Lua development Team
 > (RI), but seems not to be maintained any more
 > https://github.com/askyrme/luaproc, the original doc is
 > http://www.inf.puc-rio.br/~roberto/docs/ry08-05.pdf, a more recent doc
 > https://www.maxwell.vrac.puc-rio.br/30267/30267.PDF (seems to be about a
 > 2018 modified version)
 > - *Why in the user-lua wiki it is classified as "cooperative" and not
 > "preemptive"?* (it enables but user-level and OS-level parallelism,
 > so I guess it is cooperative at the user level and preemptive at the
 > OS-level.... is this correct?)
 > 
 > Does anyone has done some trial to assess pros/cons and performance?
I have been using luaproc for about three years.
Pros:
 - Relatively simple model
 - Excellent speedups (basically 4x speedup on 4-core machine)
 - Mostly reliable
 - Scalar data is relatively easy to pass between threads (as upvalues)
Cons:
 - The concurrency model is a bit limiting, and it took me a while to
 figure out how to use it effectively. (Details forgotten, alas.)
 - Some code has to be written in strings, so you may not find syntax
 errors as soon or as easily as you might like.
 - To pass table values between threads, I wound up writing my own
 serializer/deserializer. 
 - Occasionally a computation locks up on a mysterious way. Could
 be luaproc or could be the C library we're using to interact with
 the Unix pty interface.
On the whole I'd recommend it.
Norman

AltStyle によって変換されたページ (->オリジナル) /