In my graduation project I use only a single VM for all plugins. It gives incredible flexibility in regards to what plugins are capable of and how they communicate with each other.
I think the only way to not completely block each thread that wants to access the Lua state is by yielding at each function call, but I'm not sure how that would impact performance.
I think the only way to not completely block each thread that wants to access the Lua state is by yielding at each function call, but I'm not sure how that would impact performance.