【问题标题】:What are some good ways to do connection management in C?在 C 中进行连接管理有哪些好方法?
【发布时间】:2010-02-18 11:17:27
【问题描述】:

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

在 C 中进行连接管理有哪些好方法?是否有众所周知的图书馆来处理所有这些?我知道 C++ 的 Boost,但我对 C 和 Python 很感兴趣。

谢谢, 陈兹

附:抱歉,这个问题没有经过深思熟虑。我会尽快完善它。

【问题讨论】:

    标签: python c sockets service connection-pooling


    【解决方案1】:

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

    如果您想变得更棘手,请使用生命周期管理生成线程,其中新连接会转到最新生成的线程,以便可以终止旧线程。这样,如果一个线程持有一个资源,当它被清理时,资源就会被释放。

    您可能想查看 select、poll、epoll、完成池和 AIO。

    其中大部分都包含在 libevent 中。

    【讨论】:

    • 我知道每个连接一个线程是不好的。我的 IO 线程将处理所有 IO。不过,我确实喜欢你一生的想法。 Select、poll 和 epoll 似乎总是会增加我希望在维护库中处理的代码的复杂性。
    猜你喜欢
    • 2010-10-23
    • 2011-01-07
    • 2010-11-27
    • 1970-01-01
    • 1970-01-01
    • 2020-01-18
    • 2013-07-04
    • 1970-01-01
    • 2016-06-09
    相关资源
    最近更新 更多