2010-04-22 46 views
2

我打開多個文件並一次處理一行。這些文件包含分隔數據的令牌,因此有時候一個文件的處理可能需要等待其他人趕上相同的令牌。在這種情況下我應該使用多線程嗎? [紅寶石]

我這樣做最初只有一個線程和一個數組指示真/假如果文件應該在當前迭代中讀取,或者它應該等待其他一些追趕。

使用線程會使這更簡單嗎?更高效? Ruby是否有這樣的機制?

回答

0

我不確定在ruby中使用線程是否有益。最近我編寫並測試了一個本來可以執行並行計算的應用程序,但即使在四核處理器上我也沒有得到我所期望的,它依次執行計算,一個接一個地執行。閱讀article,它有關於線程調度的討論,可能會發現事情至少對原始ruby沒有改變。

1

首先,線程從來沒有使任何事情更簡單。線程只適用於幫助加速應用程序。線程引入了一系列新的複雜性,能夠描述多個執行線程似乎很方便,但它總是讓生活變得更加困難。其次,不成熟的優化是所有邪惡的根源。除非您知道這是一個瓶頸,否則不要試圖加速文件處理。做最簡單的事情,但可能工作(但不簡單)。

第三,如果讀取文件的過程是獨立的,線程可能會有所幫助,以便線程可以處理文件而不用擔心其他線程正在做什麼。聽起來你的情況並非如此。由於不同的線程必須彼此通信,因此在應用線程時不太可能看到速度優勢。

第四,我不知道Ruby,因此不能評論它有什麼機制。

相關問題