【发布时间】:2016-07-08 22:02:27
【问题描述】:
我正在对Ubuntu 15.10 x64 做一些研究工作。我想研究是否有办法让 2 个或多个进程同时读取文本文件减慢彼此的读取速度。
例如,两个进程P1 和P2。一个文本文件/etc/example.txt。它有 1KB 的数据。
P1的伪代码:
for (int i = 0; i < 1000000; i ++) {
str = read_file ('/etc/example.txt', 'r');
print(str);
}
P2的伪代码:
for (int i = 0; i < 100; i ++) {
str = read_file ('/etc/example.txt', 'r');
print(str);
}
time = get_the_whole_run_time();
print(time / 100);
条件一:
P1 正在运行。 P2 用于与P1“竞赛”,它计算平均阅读时间TIME_1。
条件2:
P1 正在未运行。只运行P2,它会计算平均阅读时间TIME_2。
我的目标是使 TIME_1 明显高于 TIME_2(这是出于研究目的)。但我的实验结果并非如此。 TIME_1 与 TIME_2 几乎相同。
我知道文件系统缓存之类的东西可能会影响结果。我使用命令:echo 3 > /proc/sys/vm/drop_caches 清除缓存。但它不起作用。
有什么想法吗?谢谢!
【问题讨论】:
-
您的数据文件很可能 1 KB 将被完全缓存,即 两者 都不会真正停止另一个。
-
也许试试 1GB。 1KB 读取将是一个原子 IO 操作。放慢速度的机会不大。
标签: c linux multithreading file file-io