在这种情况下我应该使用多个线程吗?

我打开多个文件并一次处理一行。 这些文件包含分隔数据的标记,因此有时一个文件的处理可能必须等待其他文件赶上相同的标记。

我最初只使用一个线程和一个数组指示true / false,如果文件应该在当前迭代中读取,或者它应该等待其他一些人赶上。

使用线程会使这更简单吗? 更高效? Ruby有这个机制吗?

我不确定在ruby中使用线程是否有益。 最近我编写并测试了一个应该进行并行计算的应用程序,但是我没有得到我所期望的即使在四核处理器上,它依次执行计算,一个接一个的线程。 阅读这篇文章 ,它讨论了线程调度,结果可能事实上至少对于原始的ruby没有改变。

首先,Threads 永远不会做任何简单的事情。 线程仅适用于帮助加速应用程序。 线程引入了许多新的复杂function,能够描述多个执行线程似乎很方便,但它总是让生活变得更加困难。

其次,过早优化是万恶之源。 除非您知道它是一个瓶颈,否则不要尝试加速文件处理。 做最简单的事情可能会起作用(但并不简单)。

第三,如果读取文件的过程是独立的,那么线程可能有所帮助,因此线程可以处理文件而不必担心其他线程在做什么。 听起来你的情况并非如此。 由于不同的线程必须相互通信,因此在应用线程时不太可能看到速度优势。

第四,我不了解Ruby,因此不能评论它有什么机制。