我需要讀取/解析大小爲8192字節的固定塊的二進制文件(4〜6 GB)。我目前的解決方案涉及使用單生產者多用戶(SPMC)模式對文件塊進行流式傳輸。多線程文件讀取
編輯
文件大小= N * 8192個字節
所有我需要做的是做一些事來每個8192個字節。該文件只需要自上而下閱讀一次。
轉念一想,這應該是一個尷尬的並行問題,我想有X線程在同等範圍內讀取(文件大小/ X)獨立尺寸。線程根本不需要互相通信。
我已經試過產卵X線程打開相同的文件,尋求各自的部分來處理,但是,這種解決方案似乎有一個問題,在由於HDD機械力求顯然比執行更糟糕SPMC解決方案。
如果在SSD上使用此方法,會有什麼區別嗎?
或者更簡單的方法是隻對內存映射整個文件並使用#pragma omp parallel for
來處理這些塊?我想我會需要足夠的RAM來做到這一點?
你會建議什麼?
您不會對文件的語法和格式有足夠的瞭解。 –
它是一個N * 8192字節的二進制文件,我需要對這8192個字節分別進行操作。 –
系統調用(假設Linux操作系統)提到[這裏](http://stackoverflow.com/a/41237690/841108)可能會有所幫助。但我猜想瓶頸是磁盤本身。你可能不需要太多的線程。 (所以* X *將會是4到10,不會有很多)。你應該基準。這不是一個令人尷尬的並行問題,因爲硬件磁盤一次只能處理一個(或很少)請求。 –