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

时间:2019-03-03 08:44:38

标签: c++ uwebsockets

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

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

(用于0.14.x的uWebSockets用户手册讨论了uS :: Async,但是该类不在0.15.x中。从当前文档中尚不清楚等效项是什么。)

1 个答案:

答案 0 :(得分:0)

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

  • uWS :: Loop :: defaultLoop-返回用于调用线程的Loop对象
  • uWS :: Loop :: defer-在循环线程中执行给定功能

在建议的用例中,“服务器”线程可以调用uWS :: Loop :: defaultLoop并提供指向其他线程的指针。其他线程可以调用uWS :: Loop :: defer在“服务器”线程中运行代码,从而在lambda中捕获所需的数据。线程可以共享套接字列表,只要它是多线程安全的,或者只能从“服务器”线程中运行的代码访问即可。