除非有明确的文档说明! 虽然Libev
本身没实现锁, 但内部的函数都是可重入且是线程安全的.
每个线程对应一个事件循环是可以并行的. 只要不在多个线程使用同一个内存结构, Libev
可以保证不同事件循环之间使用不用加锁.
为了支持多个线程, Libev
实现了所谓的ev_async
. 它允许一个事件循环能被外部并发唤醒.
如果您想知道那些设计适合您, 可以从下面中得到启发:
首先, 大多数程序都会在主线程中运行默认事件循环. 然后让其处理许多守护进程的工作.
然后为每个线程创建一个事件循环(虽然有更好的模式), 这样就初步形成了一个master/slave
模式的进程.
通常您可以使用ev_async
在它们之间唤醒对方来达到线程安全的通知目的.