线程安全的用户数据与这个websocket++示例
thread-safe user data with this websocket++ example
这个websocket++的例子正是我想要做的。
虽然用户可以很容易地跟踪websocketpp::connection_hdl
,但我需要保留更多的信息,就像stack可能会跟踪我们正在查看的页面一样,以更新左上角的投票,评论,答案,消息等。
我刚刚发现,std::queue
是不完全线程安全的。push()失败或等待,而锁定在这个代码示例?我要找到一种方法(可能与堆栈q)在boost::lockfree::queue
线程安全的C/c++队列优化推送工作。更重要的是,我刚刚发现线程安全的向量是更麻烦的c++
从第一个链接中的代码,我如何跟踪用户数据(如当前查看的堆栈问题)线程安全而不锁定&阻塞?
我实际上是在一个websocket++应用程序中这样做的,尽管我不使用实验分支。
我所做的是在on_open中创建一个UserData对象(我已经定义了),它接受构造函数中的连接。然后我把那个物体放在一个std::map<std::string, connection_hdl>
上。字符串是序列化的连接,它提供了一种唯一标识它的方法。你可以试试std::map<connection_hdl, UserData>
。
当我想找到UserData时,我只需在映射中查找连接,它返回UserData。
然后让它线程安全,你需要做一个boost::unique_lock<boost::mutex>
每次你访问std::map
。几乎没有std类是头感知的,所以你应该总是添加这样的保护。
编辑:这里是一个稳定的websocket++的例子,它显示了如何做到这一点的一种方法
相关文章:
- 激励'inline'说明符的真实世界示例?
- 为什么示例代码访问IUnknown中已删除的内存
- 以下示例中如何避免代码复制?C++/库达
- "类模板示例<int>;"语句对 C++11 是什么意思?
- 示例C++项目编译中的警告
- 示例外壳应用程序显示的 V8 "segmentation fault (core dumped)"错误
- 当Microsoft文档仅包含 C# 示例时,如何查找 C++ 包含文件名
- 在简单示例中,Python3 + ctypes 回调会导致内存泄漏
- Websocket++ 错误:收到错误handle_transport_init TLS 握手失败
- 为什么理解这个递归示例如此难以转化为直觉?
- Eventloop 卡住:NAO C++ SDK OnFaceDetection 示例
- 如何替换此示例代码片段中已弃用的handler_type_t或 boost::asio::handler_type?
- 适用于 WebView2 旧版本的示例应用程序
- 即使直接从官方示例中复制,也找不到未知类型名称QML_ELEMENT和 QML 模块
- 将数组/向量发送到 c++ 脚本的 cython 示例
- 了解提升执行器示例
- 使用Echo客户端示例从Qt UI连接到WebSocket服务器
- 在C++for Windows 7中查找poco ssl websocket客户端示例
- Poco websocket服务器示例
- 线程安全的用户数据与这个websocket++示例