多线程读取文件分析
分析结果:
|
平台
|
文件操作函数
|
场景
|
文件句柄
|
稳定性
|
平均时间
单位秒
|
|
Windows
|
fopen
fread
|
100个线程,
每个线程读取 10M
|
100 个线程共用一个句柄
|
存在问题,指针乱跳
|
无
|
|
每个线程一个新句柄
|
正常
|
1.475->1.144
| |||
| 1 个线程,
循环 100 次读取10M
|
正常
|
0.753
| |||
|
open read
|
100个线程,
每个线程读取 10M
|
100 个线程共用一个句柄
|
存在问题,指针乱跳
|
无
| |
|
每个线程一个新句柄
|
正常,有事一次 read
不能读完所需要的数据,需要多次读
|
2.334->2.120
| |||
| 1 个线程,
循环 100 次读取10M
|
正常
|
1.91
| |||
|
WIN API
| 100 个线程,
每个线程读取 10M ,每个线程一个新句柄
|
正常
|
1.477
| ||
|
| |||||
|
Linux
|
fopen fread
|
100个线程,
每个线程读取 10M
|
100 个线程共用一个句柄
|
存在问题,指针乱跳
|
无
|
|
每个线程一个新句柄
|
正常
|
2.32 à4.61
| |||
| 1 个线程,
循环 100 次读取10M
|
正常
|
0.380
| |||
|
open read
|
100个线程,
每个线程读取 10M
|
100 个线程共用一个句柄
|
存在问题,指针乱跳
|
无
| |
|
每个线程一个新句柄
|
正常,有事一次 read
不能读完所需要的数据,需要多次读
|
2.430->4.59
| |||
| 1 个线程,
循环 100 次读取10M
|
正常
|
0.370
| |||
仅供参考。

本文通过实验对比了在Windows和Linux环境下不同文件操作函数(fopen/fread, open/read)进行多线程文件读取的效果。研究发现,使用独立文件句柄的方式能有效避免指针混乱的问题,并且在不同平台上表现出不同的效率。

742

被折叠的 条评论
为什么被折叠?



