2011-05-20 52 views

回答

2

通过保持连接处于打开状态,您将阻止资源,但不会产生定期拆除连接和设置连接的开销。设置&在函数调用下关闭一个套接字连接要贵得多。将关闭意图发送到连接终点,释放与其关联的内核资源和内存。为了打开连接,发生相反的情况。为了分配内核资源,可能会有序列化的调用(取决于内核实现),这会影响整个系统的性能。最后但并非最不重要的是,命中方法不是一个确定性模型。

+0

+1重复拆卸和设置可能是最大的成本 – seand 2011-05-20 03:36:36

+0

谢谢!我想到了这个,但并不确定,也计算听到有人熟知的话会很高兴...... – algorithmicCoder 2011-05-20 03:49:51

1

比方说,你有一个线程阻塞在一个等待响应的套接字上。 (如彗星)。在那段时间内,线程不是由内核调度的,机器上的其他东西可以运行。但是,如果您正在轮询该线程正忙于简短的等待时间。这也增加了延迟,因为在轮询发生之前,您不会知道需要做些什么。

+0

您是否说内存在连接处于打开状态时也释放,并且没有任何内容正在发送到客户端?... – algorithmicCoder 2011-05-20 03:48:59

+0

大多数情况下,连接保持打开并等待服务器的响应。 “大部分情况都没有发生”。 (实际上是更精确的,但是资源(例如内存,内核句柄)在这段时间内是捆绑在一起的。 – seand 2011-05-20 03:57:06