|
|
1
3
只是第一个词:
但是要注意:这依赖于一个称为“lazy io”的特性,它只与纯代码中的lazy技术有关。纯函数在默认情况下是懒惰的,您必须努力使其严格;IO在默认情况下是“严格IO”,您必须努力使其懒惰IO。一些库函数(尤其是
|
|
|
2
3
从概念上讲,它只读取它需要的内容。但它可能使用缓冲区来实现这一点:
这表明(在Linux系统上)程序将自己分成多个线程,其中一个线程从stdin读取8kb数据,然后另一个线程输出第一个字。主要原因是反复阅读少量的内容是非常低效的。异步源(如终端和套接字)可能会产生较小的数据量,但:
在这种情况下,终端层在第一个换行符处完成了读取,即使缓冲区仍然是8kib大。因为这足够识别第一个单词的数据,所以不需要进一步读取。 |