在C中进行连接管理有哪些好方法?

时间:2010-02-18 11:17:27

标签: python c sockets service connection-pooling

在C中,在进行网络客户端/服务器设置时,我通常需要做一些标准的BSD套接字设置。然后在服务器端,我将不得不管理多个线程,通常是一个主线程,一个io线程。每个连接都由连接管理器管理,这样您就可以在新请求进入时处理连接。

在C中进行连接管理有哪些好方法?有没有知道库来处理所有这些?我知道Boost for C ++,但我对C和Python很感兴趣。

谢谢, Chenz

P.S。抱歉没有那么深思熟虑的问题。我会尽快把它弄清楚。

1 个答案:

答案 0 :(得分:2)

就个人而言,我并不是具有同步IO的单线程每个连接模型的忠实粉丝。我更喜欢带有异步IO的Y连接池的X线程。您可以根据需要生成线程,或者在连接进入预分配池时循环连接。

如果你想变得非常棘手,可以生成具有生命周期管理的线程,其中新连接会转到最新的生成线程,因此旧线程可以被终止。这样,如果一个线程保留在资源上,当它被清理时,资源将被释放。

您可能需要查看select,poll,epoll,完成池和AIO。

其中大多数都包含在libevent中。