lua-users home
lua-l archive

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


Any infinite loop in lua code will lock your mutex forever
On 28 Jan 2021, 14:28 +0300, 孙世龙 sunshilong <sunshilong369@gmail.com>, wrote:
But providing lua_lock you will get a multithreaded Lua very difficult to use, there will be deadlock problems difficult to solve.
Did you ever encounter deadlock problems when using vanilla Lua?

Best regards
sunshilong

On Thu, Jan 28, 2021 at 6:22 PM Victor Bombi <sonoro@telefonica.net> wrote:


On January 28, 2021 at 10:17 AM 孙世龙 sunshilong <sunshilong369@gmail.com> wrote:


Hi, list

In general, the macro named lua_lock is expanded as a
no-operation(i.e (void)0).

Here is the related code snippet in Lua-5.3.5:
/*
** macros that are executed whenever program enters the Lua core
** ('lua_lock') and leaves the core ('lua_unlock')
*/
#if !defined(lua_lock)
#define lua_lock(L) ((void) 0)
#define lua_unlock(L) ((void) 0)
#endif
I wonder when I need to provide a self-defined macro (e.g:
#define lua_lock(L) pthread_lock(&mutex))?

I would appreciate it if you could shed some light on this question.

Best regards

Lua is not multithread ready unless you define lua_lock. But providing lua_lock you will get a multithreaded Lua very difficult to use, there will be deadlock problems difficult to solve.
The best way to use Lua in a multithread environment is to create a different lua_State in each thread and let all different lua_States to inter-communicate. I would recomend using LuaLanes for achieving this althought there are a lot of alternatives.

Best
Victor Bombí
sunshilong