从另一个线程向 uWebSockets 0.15.x 个套接字发送数据

Sending data to uWebSockets 0.15.x sockets from another thread

我正在使用 uWebSockets 版本 0.15.x 来接受和管理服务器上的网络套接字连接。我有一个线程调用 uWS::TemplatedApp::run 来处理这个问题。

我需要从另一个线程向所有打开的网络套接字发送数据。我的理解是 uWebSockets 不是线程安全的。推荐的方法是什么?

(uWebSockets user manual for 0.14.x讨论了uS::Async,但是这个class在0.15.x里面没有了。目前还不清楚记录等价物是什么。)

这可以使用以下方法完成:

  • uWS::Loop::defaultLoop - returns 调用线程的循环对象
  • uWS::Loop::defer - 在循环的线程中执行给定函数

在提议的用例中,"server" 线程可以调用 uWS::Loop::defaultLoop 并将该指针提供给其他线程。其他线程可以调用 "server" 线程中的 uWS::Loop::defer 到 运行 代码,在 lambda 中捕获所需数据。线程可以共享套接字列表,只要它是多线程安全的,或者只能从 "server" 线程中的代码 运行 访问。