我一直在试图弄清楚,如果一个io绑定应用程序中的多线程真的会提高性能或降低它。我读过的很多资料都是相互矛盾的。适用于io绑定应用程序的多线程:好还是坏
以此为例。
Why multithreading with io-bound is bad
接受的答案是,如果您的应用程序是IO的限制多线程会引起竞争和您的应用程序变慢。
在这个例子中,得票最高的答案表明它可以提高吞吐量。
Why multithreading with io-bound is good
我误解的东西吗?
在我的情况下,我需要从n个磁盘位置每秒读取n次。我发现很难决定是否应该使用线程。
例如,如果我有20个磁盘上的文件和20个独立的线程在等待和唤醒的状态下从磁盘读取,这是否会完全减慢我的系统? 如果一个pthread正在执行从磁盘读取的代码,那么所有其他19个线程在不同文件上做同样的事情会被阻塞吗?
我们也在考虑Android上的多线程磁盘I/O方法。目前我们有超过20,000个文件,每个文件需要12ms的时间才能读取(这相当于4分钟 - 这很痛苦)。这个想法是产生N个线程并共享它们中的文件以尝试减少整体读取时间。你最终得出了什么明确的结论吗?我有兴趣听到任何你必须分享的东西。 P – protectedmember