UDT源码剖析(二)之启动与结束

UDT的启动例程

启动例程顺序:void UDT::startup() -> void CUDT::startup() -> void CUDTUnited::startup() -> void* CUDTUnited::garbageCollect(void* p) -> void CUDTUnited::checkBrokenSockets() -> void CUDTUnited::removeSocket(const UDTSOCKET u) -> void CUDT::close() -> void CUDT::flush()

  • 对于一个完整的UDT SOCKET的清理六部曲:
    • 将CUDT*的状态设置为BROKEN
    • 调用CUDT中的close()
    • 更新UDT SOCKET的关闭时间
    • 将UDT SOCKET设置为Closed
    • 在Closed Array中添加当前UDT SOCKET,在GC线程中进行处理
    • 从全局的MAP中删除

猜你喜欢

转载自www.cnblogs.com/ukernel/p/8993078.html