2010-04-22 42 views
2

我打开多个文件并一次处理一行。这些文件包含分隔数据的令牌,因此有时候一个文件的处理可能需要等待其他人赶上相同的令牌。在这种情况下我应该使用多线程吗? [红宝石]

我这样做最初只有一个线程和一个数组指示真/假如果文件应该在当前迭代中读取,或者它应该等待其他一些追赶。

使用线程会使这更简单吗?更高效? Ruby是否有这样的机制?

回答

0

我不确定在ruby中使用线程是否有益。最近我编写并测试了一个本来可以执行并行计算的应用程序,但即使在四核处理器上我也没有得到我所期望的,它依次执行计算,一个接一个地执行。阅读article,它有关于线程调度的讨论,可能会发现事情至少对原始ruby没有改变。

1

首先,线程从来没有使任何事情更简单。线程只适用于帮助加速应用程序。线程引入了一系列新的复杂性,能够描述多个执行线程似乎很方便,但它总是让生活变得更加困难。其次,不成熟的优化是所有邪恶的根源。除非您知道这是一个瓶颈,否则不要试图加速文件处理。做最简单的事情,但可能工作(但不简单)。

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

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

相关问题