Witam,
jestem nowy na tym forum, więc się przedstawię: Mam na imię Andrzej i studiuje na polibudzie warszawskiej. W C++ piszę sobie od czasu do czasu jakieś proste aplikacje consolowe. Swoją wiedzę o programowaniu opieram na Symfonii Grębosza i Borlandzie 3.1 (mam nadzieję że jeszcze ktoś go pamięta :)
Dość o mnie, teraz co mnie tu przyniosło:
W jednej ze swoich aplikacji mam do zapisu i odczytu bardzo duże pliki: 2, 8 (obecnie, w przyszłości 16 i więcej) GB i chciałbym w jakiś sposób móc szybko je zapisywać i wczytywać (póki co pomijam prędkość dysku). Wymyśliłem/wygooglałem dwa podejścia:
-
Mając procesor 8 rdzeniowy mógłbym np.: podzielić plik na 8 kawałków i zadbać, żeby każdy wątek wczytywał swój kawałek pliku. Może mi ktoś podpowiedzieć jak taki plik szybko wrzucić do pamięci? Z mojego doświadczenia jednak wiem, że zabawia wieloma wątkami potrafi zakończyć się trudnymi do znalezienia zapętleniami, więc się trochę tego pomysłu obawiam...
-
Poprzez file mapping, ale o tym jeszcze ni nie wiem :/
Mówiąc szczerze pierwsze rozwiązanie to jest to wymyślone a drugie wygooglane :)
Dlatego potrzebuję od Was pomocy:
- Jak uważacie, które podejście jest właściwe? A może coś zupełnie innego?
- Gdzie mogę poczytać o file mappingu (ale tak dla kompletnego żółtodzioba w tej kwestii, najchętniej to jakieś książki, wyszukiwarka heliona na zapytanie file mapping nic mądrego nie zwraca...)
Ze swojej strony dodam, że zależy mi przede wszystkim na stabilności rozwiązania. Komputer pewnie będzie mielił dane przez weekend albo tydzień, w związku z tym nie cieszy mnie perspektywa zawieszającego się programu :)
Jeszcze dla informacji: system operacyjny: Windows 7 x64; IDE: VS2005
Z góry dzięki za szybką odpowiedź.
Pozdrawiam
sagrado