我正在开发一个程序,从磁盘读取多个大页面并执行几个范围搜索。该程序从多个页面读取,然后将查询结果写入输出页面。我必须保持输出的顺序,使其与输入的顺序相对应。
然而,程序在多次读取后变得非常缓慢,我正在考虑使用多线程程序一次运行几个搜索。我有一个4核的Linux机器,我想有两个线程的程序。这是个好主意吗?如何保持输出文件的顺序?锁不会有帮助,因为我不知道哪个线程会先完成。
如果这是个好主意,我该怎么做?
感谢Update:这必须在不使用任何SQL库的情况下完成。
在这种情况下,线程显然是一个好主意。为了保持结果的顺序,我将使用mapReduce方法,您可以使用Qt的qtConcurrent模块找到一些很好的帮助。其思想是,您获取一个或多个页面,并将它们传递给一个线程,该线程将以列表的形式返回搜索结果。每个线程/任务都将有一个唯一的索引,所以最后索引为2的线程返回的列表将放在索引为1的线程返回的列表之后。