开发者社区 问答 正文

同步非阻塞NIO是怎么操作的?

同步非阻塞NIO是怎么操作的?

展开
收起
鲁花花生油 2021-10-29 15:30:53 495 分享 版权
来自: 华章出版社
1 条回答
写回答
取消 提交回答
  • socket连接默认是阻塞模式,在Linux系统下,可以通过设置将socket变成为非阻塞的模式(Non-Blocking)。使用非阻塞模式的IO读写,叫作同步非阻塞IO(None Blocking IO),简称为NIO模式。在NIO模型中,应用程序一旦开始IO系统调用,会出现以下两种情况:

    (1)在内核缓冲区中没有数据的情况下,系统调用会立即返回,返回一个调用失败的信息。

    (2)在内核缓冲区中有数据的情况下,是阻塞的,直到数据从内核缓冲复制到用户进程缓冲。复制完成后,系统调用返回成功,应用进程开始处理用户空间的缓存数据。

    资料来源:《Netty、Redis、ZooKeeper高并发实战》,文章链接:https://developer.aliyun.com/article/726757

    2021-10-29 15:33:38
    赞同 展开评论