2010-07-06 33 views
1

開發一個多線程程序,從多個文本文件中刪除某些字符作爲參數傳入的最佳方法是什麼?因此,當某人通過a.out axvc f1 f2 f3 f4時,其目標是從文件f1,f2,f3和f4中刪除所有字符a,x,v,c的出現。如何以線程安全的方式從多個文本文件中刪除某些字符?

+0

一個解決方案是,爲每個文件創建一個線程並執行此操作。但是如果一個文件太大而其餘太小,會怎麼樣?我們是不是重載一個線程? – user373215 2010-07-06 17:35:17

+2

該任務看起來很受I/O限制。我懷疑你會看到將工作分解到多個線程中的任何好處。 – Ferruccio 2010-07-06 17:46:27

+0

如果這些文件位於不同的磁盤上,會有很大的加速。 – MSalters 2010-07-07 09:20:37

回答

1

你不能只使用像sed這樣的常用工具來幫助你做到這一點嗎?

即使你不是,你確定CPU的使用是足夠大的處理時間的一部分,它不會被文件I/O拖垮嗎?最有可能在多個線程中執行它並不會節省你很多時間,也不會在一個線程中串行執行。

否則可能最簡單的機制是讓主線程執行I/O並將工作分派到工作線程池來完成字符移除。如果I/O速度從多個線程完成時實際提高,它會變得更復雜。

1

是否有一個特定的原因,你想使用多個線程來做到這一點?如果這些文件位於同一臺設備上,根本無法解決問題。

相關問題