带有libevent的多线程HTTP服务器
Multi-threaded HTTP server with libevent
我正在尝试用libevent完成一个简单的HTTP服务器,并根据文档示例成功地完成了它。但是,如果没有线程,libevent的全部目的就是垃圾。我对C++11中的线程不是很有经验,但我很想知道如何正确地实现这样的服务器。
我在网上找到了这个例子:https://gist.github.com/kzk/665437
这是正确的吗?pthreads是正确的选择吗?此外,这句话很奇怪:
for (int i = 0; i < nthreads; i++) {
pthread_join(ths[i], NULL);
}
那里发生了什么事?
由于一个严重的错误,我还不能推荐libevhtp,但您可能想看看他们是如何使用线程的:https://github.com/ellzey/libevhtp/blob/master/examples/thread_design.c
-他们正在创建单独的libevent实例,每个线程一个。只要在线程中小心使用相同的libevent库,所有异步代码都可以在没有额外锁等的情况下工作。IMO这是典型web服务器的libevent编码的最佳方法。
至于https://gist.github.com/kzk/665437,c++11线程应该不会比pthreads更糟糕。
相关文章:
- 在 MySQL 中运行 HTTP 服务器以从客户端接收数据
- 我不明白异步操作如何使HTTP服务器并发
- 将文件发送到 HTTP 服务器 (C++ Wininet)
- boost::asio http 服务器无法向 Postman 返回有效响应
- 如果C/C Python3扩展托管HTTP服务器并将Python代码称为请求处理程序,则如何处理并发
- QT-简单的HTTP服务器
- Apache HTTP服务器 - 如何在模块上打印到控制台
- Windows HTTP服务器API HTTPS服务器
- 在多线程HTTP服务器中发送后,如何干净地关闭套接字
- Boost Asio 示例 HTTP 服务器 -- 以这个例子为例,让它变得"production ready"
- AJAX与C HTTP服务器断开连接
- 如何在boostc++中添加http服务器端口的路径
- 使用 BSD 套接字的 HTTP 服务器不关闭连接或与 Windows 浏览器通信
- 如果我访问该页面,带有casablanca的http服务器将崩溃
- Boost http服务器示例不起作用
- 带有libevent的多线程HTTP服务器
- 为什么在读取非HTTP服务器的套接字时需要异步IO
- 使用Poco和Boost C++的多个Http服务器
- 铬中的NPAPI tcp http服务器c++
- 登录 HTTP 服务器 c++