异常安全服务器
Exception safe server
我正在构建一个 c++ 服务器库,该库的用户将在其中实现对客户端的响应。如果程序在响应实现中遇到任何运行时错误,服务器不应退出,而应仅关闭线程/连接。
我找到了两种方法。
-
使用线程并使用__try __except以捕获异常,例如访问冲突 - 关闭线程。
-
为每个连接启动一个新进程。如果不重新加载进程,客户端的响应时间会更长,并且将使用更多的 RAM。
主要对第一种选择感兴趣,但在我读过的任何论坛或论文中都不推荐它。关键是要使服务器稳定且永不终止。
我应该使用什么选项?
库的用户将实现对客户端的响应。如果程序在响应实现中遇到任何运行时错误
如果您不能 100% 控制正在执行的代码,那么多进程是使其稳定的唯一方法。
捕获任何"崩溃"SEH 异常是一项脆弱的业务。代码可能存在不会导致任何异常的错误,但只是覆盖内存,稍后会出现一些错误的行为。
您仍然可以捕获这些异常,但是一旦捕获了一个异常,您应该终止进程,因为您无法知道在进程状态中还搞砸了什么。(更好的方法实际上可能是不捕获它们,只是让进程终止,让您有机会收集故障转储。
相关文章:
- 从不同线程使用int64的不同字节安全吗
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 虚拟决赛作为安全
- 获取日期异步信号安全吗?如果在信号处理程序中使用,它会导致死锁吗
- "unknown ca"自生成的 CA、证书和客户端/服务器
- 如何将元素添加到数组的线程安全函数?
- 当我编译webrtc服务器时,Windows上只支持clang-cl
- C++中的线程安全删除
- 通过网络、跨平台传递std::变体是否安全
- 如何通过套接字将文本文件的内容从服务器发送到客户端
- 在std::thread中,joinable()然后join()线程安全吗
- 使用std::istream::peek()总是安全的吗
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 从值小于256的uint16到uint8的Endian安全转换
- 实现没有不安全服务器凭据的自定义 AuthMetadataProcessor
- uWebSockets (C++):安全的 WSS 服务器
- 异常安全服务器
- 安全服务器不工作
- 安全的服务器-客户端握手方法
- 连接到用c++编写的安全套接字服务器与用JavaScript编写的客户端