套接字、线程和继承性

       套接字API要与并发服务器一起工作。虽然其细节要取决于底层的操作系统,但套接字API的实现仍遵循下面的继承原理:

       每个新创建的线程,都从创建它的线程那里继承所有打开套接字的一个副本。

       套接字的实现使用了一中引用计数机制来控制。当一个套接字首次被创建时,系统将该套接字的引用计数置为1。只要引用计数保持正值,该套接字存在。当程序创建一个新的线程时,该线程对程序拥有的每一个打开的套接字继承一个指针,并将每个套接字的引用计数值加1。当一个线程调用close时,系统将套接字的引用计数减1,如果引用计数值减到零,则删除该套接字。

        对并发服务器而言,主线程拥有用来接受连接请求的套接字。当一个连接请求到达时,系统为这个连接创建一个新的套接字,同时主线程创建一个新线程去处理该连接。在创建一个线程后,两个线程就可去访问新的和旧的套接字,而且两个套接字的引用计数值都为2。主线程为新套接字调用close,而服务线程为旧套接字调用close,两者引用计数值都减为1。最后,在服务线程结束与客户通信时,它对新套接字调用close,将它的引用计数值减到0,以导致该套接字被删除。因此并发服务器的套接字生存期可概括为:

      只要主服务器线程在执行,它用来接受连接请求的旧套接字也就一定存在;仅当处理连接请求的服务线程存在时,为特定连接所使用的套接字才会存在。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值