lua-users home
lua-l archive

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


I've worked on a C coroutine framework implemented with ucontext.
For each client request, the framework will alloc a C coroutine to process the request.

I wanna add lua to this system. However, I met some problems.

It's hard to change C coroutine to lua coroutine, since it's a big codebase. Use lua as  glue to aggregate all the C api seems a reasonable way.
So lua will not use coroutine, leave the coroutine to C.

However, the C stack changes when switch C coroutines. It's possible to use multiple  lua virtual machine, one for each C coroutine. But it is not efficient. Each creation of C Coroutine will need create a new virtual machine and load all the scripts.

If I use only one Lua virtual machine,and create thread for each coroutine, it's much more light-weighted and scripts can be shared among different lua_thread. However, the switch execution of  C coroutine  requires  lua_thread to be suspended and resumed. Since lua only allow one running lua_thread.

Are these any solutions for this problem? Thanks in advance.