带有libevent的多线程HTTP服务器

时间:2013-12-06 14:25:25

标签: c++ http c++11 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);
}

那里发生了什么?

1 个答案:

答案 0 :(得分:1)

由于serious bug,我不能推荐libevhtp,但你可能想看一下他们如何使用这些主题:https://github.com/ellzey/libevhtp/blob/master/examples/thread_design.c
- 他们正在创建单独的libevent实例,每个线程一个。只要您小心在线程中使用相同的libevent库,所有异步代码就可以在没有额外锁等的情况下工作。 IMO是解决典型Web服务器攻击的最佳方法。

对于https://gist.github.com/kzk/665437,c ++ 11线程不应该比pthread更差。