代码之家  ›  专栏  ›  技术社区  ›  yojimbo87 jesuisbonbon

用于跟踪活动连接的数据结构

  •  0
  • yojimbo87 jesuisbonbon  · 技术社区  · 14 年前

    • 列表中的连接数很大
    • 同时,在搜索过程中,连接被断开
    1 回复  |  直到 14 年前
        1
  •  0
  •   Dialecticus    14 年前

    结构应该有一个连接句柄(SOCKET)、一个引用计数和一个标志,指示应该尽快关闭连接并删除对象。不管容器是什么,它都必须有用于搜索/插入/删除和GetReference/Release逻辑的同步机制(关键部分)。如果引发关闭标志,则GetReference函数应返回NULL。您可能需要更多的GetReference,这取决于搜索条件(并且connection对象应该具有所有那些可以帮助在容器中找到它的值)。GET引用函数中的一个可以在容器中不存在的情况下创建新对象。

    释放函数应该关闭连接并从容器中删除对象,如果关闭标志被提升并且引用计数被降为零。但是释放 关闭关键部分内的连接,因为这可能是一个耗时的操作(取决于 graceful shutdown and lingering option ). Release应该输入CS,减少引用计数,如果为零,则离开CS,关闭连接,再次输入CS,然后从容器中移除对象并将其删除。由于关闭标志被提升,引用计数将不会在两个CS之间提升。

    推荐文章