12.4. wake primitive
connection::wake () 方法通过触发 on_connection_wake () 回调,允许任何线程在连接上提示活动。这是 连接 上唯一的 thread-safe 方法。
wake () 是一个轻量级、低级别的原语,用于在线程之间进行信号。
-
它不执行任何代码或数据,这与
work_queue不同。 -
对
wake ()的多个调用可能会合并到一个on_connection_wake ()中。 -
可能会出现对
on_connection_wake ()的调用,而无需任何应用程序调用wake (),因为库在内部使用wake ()。
wake () 的语义与 std::condition_variable::notify_one () 类似。会有一个唤醒,但必须有一些共享应用程序状态来确定发生唤醒的原因,以及要对其执行什么操作。
工作队列在很多实例中更易于使用,但是如果您已经拥有自己的外部线程安全队列,并且需要高效的方法来唤醒连接来检查它们的数据,则 wake () 可能很有用。