我有一個長時間運行的進程,它讀取大文件並寫入摘要文件。爲了加快速度,我在處理多個文件同時使用普通的舊主題:.NET中的線程vs進程
ThreadStart ts = new ThreadStart(Work);
Thread t = new Thread(ts);
t.Start();
什麼我發現是,即使單獨的線程讀取不同的文件,並將它們之間沒有鎖定和使用上的24 4個線程核心框,我甚至不能在CPU上達到10%或在磁盤I/O上達到10%。如果我在我的應用中使用更多的線程,它似乎運行得更慢。
我想我做錯了什麼,但是好奇的是,如果我第二次和第三次啓動整個exe,那麼它實際上處理文件的速度要快兩到三倍。我的問題是,爲什麼我不能在我的一個應用程序中獲得12個線程來處理數據併爲機器徵稅,以及在我的應用程序的3個實例中有4個線程?
我已經介紹了應用程序,最耗時間和頻繁調用的函數都是字符串處理調用。
不可能說沒有實際的代碼做文件處理。 –
配置文件運行過程中告訴你瓶頸在哪裏? –
應該有一些帶有鎖定/同步代碼的公共位置(可以通過處理線程訪問),您可以共享此同步代碼 – sll