亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

Java nio 空輪詢bug

beanlam / 1105人閱讀

這個應該是很老的bug了,linux平臺,jdk6好像就修復了

bug 描述 :https://bugs.java.com/bugdata...

This is an issue with poll (and epoll) on Linux. If a file descriptor for a connected socket is polled with a request event mask of 0, and if the connection is abruptly terminated (RST) then the poll wakes up with the POLLHUP (and maybe POLLERR) bit set in the returned event set. The implication of this behaviour is that Selector will wakeup and as the interest set for the SocketChannel is 0 it means there aren"t any selected events and the select method returns 0.

之前一直不知道event mask 為0 代表啥,知道翻到了資料

http://man7.org/linux/man-pag...

The field events is an input parameter, a bit mask specifying the
events the application is interested in for the file descriptor fd.
This field may be specified as zero, in which case the only events
that can be returned in revents are POLLHUP, POLLERR, and POLLNVAL
(see below).

大概知道了0代表了POLLHUP, POLLERR, and POLLNVA 這些event

繼續(xù)查閱https://blog.csdn.net/tilter/...

常量    說明
POLLIN 普通或優(yōu)先級帶數(shù)據(jù)可讀
POLLRDNORM 普通數(shù)據(jù)可讀
POLLRDBAND 優(yōu)先級帶數(shù)據(jù)可讀
POLLPRI 高優(yōu)先級數(shù)據(jù)可讀
POLLOUT 普通數(shù)據(jù)可寫
POLLWRNORM 普通數(shù)據(jù)可寫
POLLWRBAND 優(yōu)先級帶數(shù)據(jù)可寫
POLLERR 發(fā)生錯誤
POLLHUP 對方描述符掛起
POLLNVAL 描述字不是一個打開的文件

大概明白了Bug描述中 abruptly terminated (RST)的含義及發(fā)生場景

也就知道什么時候會發(fā)生空輪詢bug

個人記錄下

還有1問題沒想明白,為啥先cancel,再select(or selectNow) 還是無法避免這個問題? ref: https://www.cnblogs.com/JAYIT...
網(wǎng)上說,在多線程環(huán)境下,selectNow先發(fā)生,cancel后發(fā)生,這樣還是會存在問題
但是,即使cancel后發(fā)生,channel也會被移到待移除channel集合了,下次再輪詢的時候,select也會出發(fā)這個集合里面的channel被清除
這樣,最多多一次空輪訓。
目前給的方案都是open一個新的selector,把有效的channel全部注冊到新的selector,再輪詢新的selector

文章版權歸作者所有,未經(jīng)允許請勿轉載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉載請注明本文地址:http://www.ezyhdfw.cn/yun/76839.html

相關文章

  • 【Netty】學習NioEventLoop

    摘要:主從模型主從多線程多個的線程池用于接受客戶端的連接。負責多路分離已連接的,讀寫網(wǎng)絡數(shù)據(jù),將業(yè)務處理功能扔給線程池完成。比如在線程內(nèi)部進行串行操作,避免多線程競爭造成的性能問題。 歡迎關注公眾號:【愛編程】如果有需要后臺回復2019贈送1T的學習資料哦?。?showImg(https://upload-images.jianshu.io/upload_images/13150128-3c...

    tulayang 評論0 收藏0
  • JDK中關于BIO,NIO,AIO,同步,異步介紹

    摘要:即可以理解為,方法都是異步的,完成后會主動調(diào)用回調(diào)函數(shù)。主要在包下增加了下面四個異步通道其中的方法,會返回一個帶回調(diào)函數(shù)的對象,當執(zhí)行完讀取寫入操作后,直接調(diào)用回調(diào)函數(shù)。 本文原創(chuàng)地址,我的博客:jsbintask.cn/2019/04/16/…(食用效果最佳),轉載請注明出處! 在理解什么是BIO,NIO,AIO之前,我們首先需要了解什么是同步,異步,阻塞,非阻塞。假如我們現(xiàn)在要去銀行取...

    opengps 評論0 收藏0
  • #yyds干貨盤點# Netty源碼分析之Reactor線程模型詳解

    摘要:啟動然后一路執(zhí)行到方法中,調(diào)用方法啟動線程。的執(zhí)行流程中的方法是一個無限循環(huán)的線程,在該循環(huán)中主要做三件事情,如圖所示。而這個喚醒是沒有任何讀寫請求的,從而導致線程在做無效的輪詢,使得占用率較高。 上一篇文章,分析了Netty服務端啟動的初始化過程,今天我們來分析一下Netty中的Reactor線程模型在分析源...

    番茄西紅柿 評論0 收藏2637
  • java-netty-Netty in Action 5th-ch1-Netty and Java

    摘要:一個多路復用器可以負責成千上萬的通道,沒有上限。不需要通過對多路復用器對注冊的通道進行輪詢操作即可實現(xiàn)異步讀寫,從而簡化編程模型。同時,支持支持如果是怎么辦最后,到目前位置,支持不支持二無法擴展作為的核心,無法擴展,私有構造函數(shù)。 前言 netty 學習 基于 netty in action 5th, 官網(wǎng)資料,網(wǎng)絡博客等 1.1 Why Netty? netty 是一個中間層的抽象 ...

    LeviDing 評論0 收藏0
  • Netty序章之BIO NIO AIO演變

    摘要:后改良為用線程池的方式代替新增線程,被稱為偽異步。最大的問題是阻塞,同步。每次請求都由程序執(zhí)行并返回,這是同步的缺陷。這些都會被注冊在多路復用器上。多路復用器提供選擇已經(jīng)就緒狀態(tài)任務的能力。并沒有采用的多路復用器,而是使用異步通道的概念。 Netty是一個提供異步事件驅動的網(wǎng)絡應用框架,用以快速開發(fā)高性能、高可靠的網(wǎng)絡服務器和客戶端程序。Netty簡化了網(wǎng)絡程序的開發(fā),是很多框架和公司...

    VincentFF 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<