从多个线程请求连接到远程服务
Connecting to remote services from multiple threaded requests
我有一个boost asio应用程序,它有很多线程,类似于web服务器,可以处理数百个并发请求。每个请求都需要同时调用memcached和redis(分别通过libmemcached或redisp)。在这种情况下,最好的做法是从每个线程分别连接到redis和memcached(有效地将服务器上打开的套接字增加三倍,每个请求三个)吗?或者,有没有一种方法可以让我用一个memcached/redis连接来构建一个静态对象,并允许所有线程共享这个连接?当谈到这样的事情的线程安全性时,我有点困惑,线程之间的一切都需要异步,但每个线程的单独请求都需要阻塞(所以每个线程都有一个线性进程,但许多线程在任何给定的时间都可以在自己的进程中处于不同的位置)。这有道理吗?
非常感谢!
由于memcached有同步协议,在得到prevous的答案之前,您不应该编写下一个请求。所以,并没有其他线程可以在同一个memcached连接中聊天。如果你在"阻塞"模式下使用它,我更喜欢使线程本地连接。
或者,您可以让它以"异步"方式工作:创建连接池,从中选择一个连接(并锁定它)。请求完成后,将其返回到池中。
此外,您还可以创建一个请求队列,并在特殊线程中处理它(使用多重集和回调)。
相关文章:
- 使用 ssh 重新连接到远程 Ubuntu 机器后,如何继续使用 gdb 调试 c++ 代码?
- C++ Winsock2 客户端未通过远程 IP 连接到服务器
- 使用 IP 帮助程序的 Windows 中活动 UDP 连接的远程地址
- 连接到远程存储库并获取数据
- 接受套接字,但m_socket.远程终结点引发 传输终结点未连接
- C UDP RecvFrom最终悬挂在远程连接上
- DirectX 11 GetDisplayModeList() 在远程桌面连接中失败
- 通过 gdb 连接到远程 gdb 服务器时出错
- 如何从活动的 udp 连接获取远程 IP 地址和端口
- 远程、IPC 和线程场景中微服务的低延迟通信
- 远程过程调用-客户端提供的服务
- QtRO - 类 qremoteobjects - 如何连接 2 个和更多远程对等体 beetwen TCP
- 如何知道何时有最大数量的命名管道客户端与服务的连接?
- 将Raspberry Pi 2与外部远程数据库连接
- 以编程方式连接到远程 SQL Server C++
- 用于服务网络连接的英特尔TBB任务 - 良好的模型
- Libssh C 包装器 - 离开范围时基本的远程连接segfaults
- 作为服务运行时连接到远程计算机的 WMI
- 从多个线程请求连接到远程服务
- CoCreateInstance没有启动或连接atlcom服务