小编tgg*_*guy的帖子

Linux阻止I/O实际上如何工作?

在Linux中,当您进行阻止i/o调用(如读取或接受)时,实际发生了什么?

我的想法:进程从运行队列中取出,在某个等待队列上进入等待或阻塞状态.然后当建立tcp连接(用于接受)或硬盘驱动器准备就绪或读取文件时,会引发硬件中断,让那些进程等待唤醒并运行(在文件读取的情况下,如何linux知道要唤醒什么进程,因为可能有很多进程在等待不同的文件?).或者也许不是硬件中断,单个进程本身轮询以检查可用性.不确定,有帮助吗?

linux blocking linux-kernel

8
推荐指数
2
解决办法
8220
查看次数

Java BufferedReader readline阻塞?

我想发一个HTTP请求,然后按照草图在这里得到响应:

URLConnection c = new URL("http://foo.com").openConnection();
c.setDoOutput(true);

/* write an http request here using a new OutputStreamWriter(c.getOutputStream) */

BufferedReader reader = new BufferedReader(new InputStreamReader(c.getInputStream));
reader.readLine();
Run Code Online (Sandbox Code Playgroud)

但我的问题是,如果我发送的请求需要很长时间才能收到响应,那么上面的调用reader.readLine()会发生什么?此进程是否会在CPU上保持运行/可运行,还是会从CPU中取出并在有IO被读取时被通知唤醒并再次运行?

如果它停留在CPU上,可以做些什么让它下来并在以后得到通知?

java io networking blocking bufferedreader

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

blocking ×2

bufferedreader ×1

io ×1

java ×1

linux ×1

linux-kernel ×1

networking ×1