如果一个程序的主要功能是从磁盘中读取数据,那么让它多线程是不是一个好主意?



我正在开发一个程序,从磁盘读取多个大页面并执行几个范围搜索。该程序从多个页面读取,然后将查询结果写入输出页面。我必须保持输出的顺序,使其与输入的顺序相对应。

然而,程序在多次读取后变得非常缓慢,我正在考虑使用多线程程序一次运行几个搜索。我有一个4核的Linux机器,我想有两个线程的程序。这是个好主意吗?如何保持输出文件的顺序?锁不会有帮助,因为我不知道哪个线程会先完成。

如果这是个好主意,我该怎么做?

感谢

Update:这必须在不使用任何SQL库的情况下完成。

在这种情况下,线程显然是一个好主意。为了保持结果的顺序,我将使用mapReduce方法,您可以使用Qt的qtConcurrent模块找到一些很好的帮助。其思想是,您获取一个或多个页面,并将它们传递给一个线程,该线程将以列表的形式返回搜索结果。每个线程/任务都将有一个唯一的索引,所以最后索引为2的线程返回的列表将放在索引为1的线程返回的列表之后。

相关内容

  • 没有找到相关文章

最新更新