【发布时间】:2015-03-21 04:03:29
【问题描述】:
我正在开发一个要在多核处理器 PC 上运行的 VC6 项目。我们需要处理大量文件。我将使用多个线程来处理它们。我需要专家的建议才能继续。据我所知,这是数据并行的情况。剧情是这样的。
文件说明:=
文件结构完全相同,但名称随意。
每个大小约为 100 kb。
文件编号从几百到几千不等。
每个文件都以完全相同的方式处理。
对于每个文件,
我将从硬盘读取 -> 进程 -> 写入硬盘
保存可能在同一个文件中,也可能是同名的不同文件夹(目前没有决定所以忽略)
我正在考虑使用多个线程来处理文件。因此每个核心将处理一个文件。 (我知道文件处理、线程创建、获取内核数量)
怀疑 1。
现在假设有 1500 个文件和 2/4/8 个内核,我应该如何在多个线程之间平均分配文件(大约),以便每个文件只处理一次。
怀疑 2。 我只有一个 HDD,所以要为 I/O 创建多少线程。
One thread for doing both Input and output
OR
Two threads, One for reading and one for writing.
提前谢谢你 金手
【问题讨论】:
-
你也可以考虑overlapped asynchronous operations来省去穿线的麻烦。
-
只有一个 HDD,除非处理文件内容需要相当长的时间,否则磁盘 IO 将成为您的瓶颈,并且使用多个线程不会提高应用程序的整体运行时间。跨度>
标签: c++ multithreading multicore