我正在打开多个文件并一次处理一行。这些文件包含分隔数据的标记,因此有时一个文件的处理可能必须等待其他文件赶上同一个标记。
我最初只使用一个线程和一个数组,如果在当前迭代中应该读取该文件,或者是否应该等待其他一些文件赶上,则表示为true / false。
使用线程会使这更简单吗?更高效? Ruby有这个机制吗?
答案 0 :(得分:1)
首先,线程 从不 使任何事情变得更简单。线程仅适用于帮助加速应用程序。线程引入了许多新的复杂功能,能够描述多个执行线程似乎很方便,但它总是让生活变得更加艰难。
其次,过早优化是万恶之源。除非您知道它是一个瓶颈,否则不要尝试加速文件处理。做最简单的事情可能会起作用(但并不简单)。
第三,如果读取文件的过程是独立的,那么线程可能有所帮助,因此线程可以处理文件而不必担心其他线程在做什么。听起来你的情况并非如此。由于不同的线程必须相互通信,因此您不太可能在应用线程时看到速度优势。
第四,我不了解Ruby,因此不能评论它有什么机制。
答案 1 :(得分:0)
我不确定在ruby中使用线程是否有益。最近我编写并测试了一个应该进行并行计算的应用程序,但是我没有得到我所期望的即使在四核处理器上,它依次执行计算,一个接一个的线程。阅读此article,它讨论了线程调度,可能会发现事情至少对于原始的ruby没有改变。