说明

除非有明确的文档说明! 虽然Libev本身没实现锁, 但内部的函数都是可重入且是线程安全的.

每个线程对应一个事件循环是可以并行的. 只要不在多个线程使用同一个内存结构, Libev可以保证不同事件循环之间使用不用加锁.

为了支持多个线程, Libev实现了所谓的ev_async. 它允许一个事件循环能被外部并发唤醒.

思路

如果您想知道那些设计适合您, 可以从下面中得到启发:

  • 首先, 大多数程序都会在主线程中运行默认事件循环. 然后让其处理许多守护进程的工作.

  • 然后为每个线程创建一个事件循环(虽然有更好的模式), 这样就初步形成了一个master/slave模式的进程.

  • 通常您可以使用ev_async在它们之间唤醒对方来达到线程安全的通知目的.