2010-02-18 48 views
0

在C中,当进行网络客户端/服务器设置时,我通常必须执行一些标准的BSD套接字设置。然后在服务器端,我将不得不管理多个线程,通常是一个主线程,一个io线程。每个连接都由连接管理器管理,以便您可以在新请求进入时处理连接。在C中进行连接管理有哪些好方法?

在C中执行连接管理有哪些好方法?是否有知识库来处理所有这些?我知道关于C++的Boost,但我对C和Python很感兴趣。

感谢, Chenz

附:对不起,没有这么深思熟虑的问题。我会尽快磨合它。

回答

2

就我个人而言,我不是一个具有同步IO的单线程连接模型的狂热粉丝。我更喜欢使用异步IO的Y连接池的X线程。您可以根据需要产生线程,或者在连接进入预分配池时轮询循环连接。

如果你想要真的很棘手,用生命周期管理产生线程,新的连接到新的产生的线程,以便旧的线程可以关闭。这样一来,如果一个线程持有一个资源,当它被清理时,资源将被释放。

你可能想看看select,poll,epoll,完成池和AIO。

其中大部分包裹在libevent

+0

我知道单线程每连接是坏的。我的IO线程将处理所有的IO。尽管如此,我确实喜欢你的一生。选择,轮询和epoll似乎总是会增加我想在维护的库中处理的代码的复杂性。 – 2010-02-18 13:05:46