套接字api要與併發伺服器一起工作。雖然其細節要取決於底層的作業系統,但套接字api的實現仍遵循下面的繼承原理:
每個新建立的執行緒,都從建立它的執行緒那裡繼承所有開啟套接字的乙個副本。
套接字的實現使用了一中引用計數機制來控制。當乙個套接字首次被建立時,系統將該套接字的引用計數置為1。只要引用計數保持正值,該套接字存在。當程式建立乙個新的執行緒時,該執行緒對程式擁有的每乙個開啟的套接字繼承乙個指標,並將每個套接字的引用計數值加1。當乙個執行緒呼叫close時,系統將套接字的引用計數減1,如果引用計數值減到零,則刪除該套接字。
對併發伺服器而言,主線程擁有用來接受連線請求的套接字。當乙個連線請求到達時,系統為這個連線建立乙個新的套接字,同時主線程建立乙個新執行緒去處理該連線。在建立乙個執行緒後,兩個執行緒就可去訪問新的和舊的套接字,而且兩個套接字的引用計數值都為2。主線程為新套接字呼叫close,而服務執行緒為舊套接字呼叫close,兩者引用計數值都減為1。最後,在服務執行緒結束與客戶通訊時,它對新套接字呼叫close,將它的引用計數值減到0,以導致該套接字被刪除。因此併發伺服器的套接字生存期可概括為:
只要主伺服器執行緒在執行,它用來接受連線請求的舊套接字也就一定存在;僅當處理連線請求的服務執行緒存在時,為特定連線所使用的套接字才會存在。
CSS 繼承性和層疊性
繼承性 有一些屬性,當給自己設定的時候,自己的後代都繼承上了,如color text 開頭的 line 開頭的 font 開頭的。type text css divstyle head 我是段落p 我是段落p 我是段落p div body 不是所有屬性都能夠繼承,如上圖,color屬性會被繼承,但b...
css 繼承性和層疊性
css有兩大特性 繼承性和層疊性 物件導向語言都會存在繼承的概念,在物件導向語言中,繼承的特點 繼承了父類的屬性和方法。那麼我們現在主要研究css,css就是在設定屬性的。不會牽扯到方法的層面。繼承 給父級設定一些屬性,子級繼承了父級的該屬性,這就是我們的css中的繼承。記住 有一些屬性是可以繼承下...
C 多型性和繼承性
這篇文章是6年前的,從自己的qq 632846506 日誌中移過來的。前段時間有人突然問我c 多型性的理論知識,一下子把我問蒙了,用c 近十年,讓我一下子回答多型性的理論。我答不上來,只是簡單的回答了下 多型性主要用在函式介面上,主要是虛函式和純虛函式 的使用,基類中的函式可以在不同子類中有不同的實...