多线程中的LUA并发



如果我要实现只有两个函数的服务器,该功能是登录和注册,我该如何实现最佳并发性能?

这是我能想到的一些方法。

第一,如果只有一个线程,答案很清楚。只能将LUA的coroutine用于此目的。

第二,如果我有一个多核CPU,并且想利用这一点,则将考虑多线程。在这种情况下,如果我只使用一个LUA_STATE并实现Lua_lock ,并且在线程安全模式下使用LUA,但我认为这会导致严重的锁定头顶问题。因为,我发现Lua将lua_lock命名为大多数地方。我能想到的一种最佳方法是i 使用Multi lua_states(由LUA_NEW线程创建,共享全局表),而不是实现Lua_lock ,但我认为这仅适用于仅阅读操作(登录)。那注册呢,我可以在注册时锁定全球表格吗?

我认为最终答案将是多线程 lua.coroutine(每个核心创建1个线程,并在每个线程中使用coroutine)。但是我没有如何。

你是对的。在LUA中使用OS线程的唯一有效方法是为每个线程创建单个LUA状态。您可以自己实施或采用一些存在解决方案,例如https://github.com/effil/effil。

最新更新