【发布时间】:2011-10-25 21:22:52
【问题描述】:
我一直试图弄清楚 io-bound 应用程序中的多线程是否真的会提高或降低性能。我读过的许多资料都是相互矛盾的。
以这个为例。
Why multithreading with io-bound is bad
公认的答案是,如果您的应用程序是 io-bound,多线程会导致争用并减慢您的应用程序。
这个例子在哪里,得票最高的答案表明它可以提高吞吐量。
Why multithreading with io-bound is good
我是不是误会了什么?
在我的情况下,我需要每秒从 n 个磁盘位置读取 n 次。我发现很难决定是否应该使用线程。
例如,如果我在磁盘上有 20 个文件,并且有 20 个单独的线程在等待和唤醒状态下从磁盘读取,这会完全减慢我的系统吗? 如果一个 pthread 正在执行从磁盘读取的代码,是否会阻止所有其他 19 个线程在不同文件上执行相同的操作?
【问题讨论】:
-
我们也在考虑在 Android 上采用多线程磁盘 I/O 方法。目前我们有超过 20,000 个文件,每个文件需要大约 12 毫秒才能读取(相当于 4 分钟 - 这很痛苦)。这个想法是产生 N 个线程并在它们之间共享文件以尝试减少整体读取时间。你最后有什么明确的结论吗?我很想听听你有什么要分享的。 P
标签: multithreading ipad io pthreads