此页面包含与Lua中的多任务/多线程/并行化[1]相关的链接和/或讨论。
- 协作式
- 标准 Lua 协程 [2] - 轻量级协作式多任务
- [Coco] (5.1) - 真正的 C 协程,用于 Lua (可从任何地方 yield)
- [tuna] (5.1/5.2) - 协作式 C 级别调度器,在某些方面类似 Coco。内存效率高。支持 Win32 (很快支持 Win64) 和 Linux x86/64
- [Copas] (5.1/5.2/5.3) - 一个基于协程和 LuaSocket? 的调度器,可用于请求/响应服务器。
- [LuaEvent] (5.1) - libevent 的绑定,提供类似 Copas 的协程调度器。
- [lua-ev] (5.1) - libev 的绑定,尚在早期阶段。
- [luasched] (5.1) - 协作式多线程,共享内存
- [Lumen] (5.1/5.2/LuaJIT) - 纯 Lua 协作式多线程,共享内存,灵感来自 luasched。
- [cqueues] (LuaJIT, 5.2, 5.3) 使用 epoll, kqueue 和 Solaris 端口的协程调度。无回调使其可与 C 或 Lua 中的其他事件系统互操作,因为每个 cqueue 调度器都提供一个可轮询的描述符。包含用于协程之间快速唤醒和切换的轻量级条件变量。还包括对非阻塞套接字、信号、内核线程和文件更改通知的绑定。除 OpenSSL 外无依赖。
- [levent] (5.2/5.3) - 基于 libev 的 Lua 并发库,类似于 gevent。
- [Emilua fibers]
- 抢占式,共享状态
- [LuaThread] (5.0/5.1) - 线程共享相同的 Lua 状态 (同步);使用原生操作系统线程 (抢占式)
- 抢占式,消息传递
- [zmq.threads] - [ZeroMQ] 的 Lua 绑定有一个 [lua-llthreads] 的包装器,为 lua-llthreads 添加消息传递支持。
- [Lanes] (5.1/5.2) - 完全分离的 Lua 状态,每个线程一个,支持异步消息传递
- [LuaTask] (5.1) - 多个并发、独立的 Lua 状态,每个线程一个,支持消息传递
- [mqlua] (5.1/5.2) - MqLua - 在 POSIX 线程中运行多个 Lua 状态,并使用 ZeroMQ 进行通信。
- [LuaExec] (5.1, 5.2, 5.3) - 分离的状态,基于抽象信号的异步消息传递,递归
- [cqueues.thread] (5.1, LuaJIT, 5.2, 5.3) - 使用 pthreads 的分离状态,每个状态中具有非阻塞、基于协程的 I/O。类似于 N:M 线程,但操作系统线程之间无共享数据。
- [Effil] (5.1, 5.2, 5.3, LuaJIT) - 线程安全表 + 元表,线程可暂停/恢复和取消,FIFO 通道。线程在独立的 Lua 状态中。
- 抢占式
- 协作式,消息传递
- 仅 C 侧线程
- 其他
Lua 多线程库的比较可以在 [Lanes] 中找到。
RecentChanges · preferences
编辑 · 历史
最后编辑于 2023年4月4日 下午7:38 GMT (差异)