selector的理解

來源:互聯網
上載者:User

標籤:io   os   sp   java   資料   問題   bs   時間   linux   

       

     對於nio這塊估計在幾年前就有關注,知道非阻塞,線程池,緩衝池,io的模式select,poll,epoll,甚至epoll中的et,lt.

但是最近才有時間實際看了看netty的源碼,才發現原來selector可以這麼用,在我的印象中覺得一個服務其實一個selector就夠用了,並且本身對於selector的理解也不是很深,今天就大說說自己的認識吧.

     jvm把作業系統的很多特性都封裝了起來,理解起來就比較困難,selector我的理解就是一個控制代碼,更像是一顆樹,應用程式層把要做的事情綁定到這個樹上面,對應的事情發生變化時,作業系統的底層會改變狀態,然後通過java的select的方法不斷的迴圈,就可以擷取發生變化的串連.其實這塊可以不限於網路方面,libevent的管道模型也是通過selector進行通知的.

   這樣比如在在網路綁定完地址後,就可以把當前的serversocket綁定到selector上面,當有新的串連過來,會改變serversocket的狀態,select就可以擷取出串連的socket,然後把socket就要讀資料,就把socket在綁定到selector上面並且對這個網路的讀感興趣.寫也類似,這樣就完成了網路的訊息通訊.

  在netty中,分為了boss和worker(我看的版本比較低3.多的)boss只會綁定有串連的selecotr,而把資料的讀寫都綁定到別的selector上面,這樣可以充分發揮多核的優勢.每個boss或worker線程都會有自己的selector,並且對linux的epollcpu 利用問題做了處理.

 

selector的理解

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.