11.5.6 fread回顾
如果读者能够一口气把fread的实现看完,我们对您表示十分的钦佩,因为它里面涉及诸多的细节让人无法做到一览无余。我们在这里把这些细节略去,在此做个总结性的回顾。当用户调用CRT的fread时,它到ReadFile的调用轨迹如图11-15所示。
|
| (点击查看大图)图11-15 ReadFile调用轨迹 |
在这个轨迹中,_fread_nolock_s的实现是最复杂的,因为它涉及缓冲区的操作,它也是读取文件的主要部分,如果我们使用fread读取一小块数据,有可能在_fread_nolock_s的时候发现所有所需要的数据都在缓冲中,就不需要通过_read和ReadFile向操作系统读取文件了,而是直接从缓冲区复制数据并返回,这样就减少了系统调用的开销。
【责任编辑:
云霞 TEL:(010)68476606】