Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Kopiowanie plików - wątki, mutex, bufor współdzielony

Ostatnio zmodyfikowano 2013-06-23 12:29
Autor Wiadomość
jacek1234567890
Temat założony przez niniejszego użytkownika
[C] Kopiowanie plików - wątki, mutex, bufor współdzielony
» 2013-06-23 09:48:12
Witam

Mam takie oto zadanie:
 
"Napisać trójwątkowy program do kopiowania plików (wątek główny, czytający, piszący) z synchronizacją zrealizowaną za pomocą muteksów. Wątki czytający i piszący powinny działać współbieżnie, wykorzystując do komunikacji współdzielony bufor, składający się z czterech 512 bajtowych bloków. Pojedynczy zapis do bufora, a także odczyt z bufora, powinien się ograniczać do jednego bloku.Uwaga: kopiowane pliki mogą mieć długość, która nie jest wielokrotnością 512 bajtów..."


Jednak nie do końca wiem jak się za nie zabrać. W związku z tym mam kilka pytań:
1) Czy współdzielony bufor to to samo co pamięć współdzielona?
2) Jak zrobić aby bufor składał się z czterech bloków o określonej wielkości?
3) Jak mam zrealizować aby pojedynczy odczyt i zapis dotyczył tylko jednego segmentu bufora?
P-85980
DejaVu
» 2013-06-23 12:29:35
1. Pamięć współdzielona to termin opisujący sposób korzystania z pamięci, bufor współdzielony raczej informuje o tym, że: dane mają być buforowane w jakimś wycinku pamięci + utworzony bufor ma być współdzielony przez wątki, czyli trzeba zabezpieczyć ten wycinek pamięci przed wieloma wątkami piszącymi.
3. Możesz poczytać o sekcjach krytycznych, choć w sumie masz wymieniony sposób synchronizacji dostępu za pomocą mutexów, więc...
Frazy, które należy wpisać w wyszukiwarkę google:

Punkt drugi jest już typową wizją implementacyjną, którą ja bym zinterpretował tak:
1) wątek piszący zapisuje do każdego bufora kolejne dane (dane są zapisywane tylko do tych wątków, które nie są aktualnie blokowane i zostały już odczytane)
2) wątek odczytujący odczytuje wszystkie wątki do których zapisano już jakieś dane i nie są zablokowane
3) wątek odczytujący zostawia informację, że bufor, że został już odczytany (bądź go po prostu wrzuca do jakiejś kolejki, że może zostać ponownie użyty przez wątek piszący).
Generalnie rzecz biorąc najpierw wczytałbym się na Twoim miejscu jak działają mutexy, bo mutexy w znacznym stopniu determinują sposób realizacji zadania.

P-85983
« 1 »
  Strona 1 z 1