Witajcie,
Ostatni wątek zachęcił mnie do odpalenia CLiona. Przyszedł problem, którego samodzielnie nie przeskoczę bo jest to dość skomplikowane. Musze napisać klasę FileStream
, która może czytać lub pisać do/z pliku lub archiwum. Nie wiem jak to zrealizować, ponieważ z jednego archiwum może czytać kilka programów albo wątków. Da się w jednym momencie z kilku programów otworzyć plik przez fopen()
w trybie rw
? Co jesli jeden wątek zapisał by coś do archiwum, albo robił defragmentację, a pozostałe, które by czytały trafiały by do sektorów w archiwum, które zostały przed chwilą przeniesione. Wychodziły by jakieś śmieci. Istnieje coś jak std::mutex
tylko na plik? Chcę dopuścić, żeby w jednym momencie programy mogły tylko czytać, a jak by jeden chciał zapisywać to nie mógł by otworzyć pliku i analogicznie jak by jeden pisał do plików to reszta nie mogła by otworzyć, żeby czytać. Nie wiem jak jest to na różnych systemach, interesuje mnie Win, Linux i OS X. W sumie to nie tyczy się tylko archiwów, ale ogólnie wszystkich plików możliwych do otwierania przez moją klasę.
PS. Albo źródło gdzie to można znaleźć.