Narzędzia użytkownika

Narzędzia witryny


aktywny_obiekt

Różnice

Różnice między wybraną wersją a wersją aktualną.

Odnośnik do tego porównania

Both sides previous revision Previous revision
aktywny_obiekt [2008/04/15 20:41]
krogala
aktywny_obiekt [2008/04/15 20:43]
krogala
Linia 2: Linia 2:
 autor: Krzysztof Rogala autor: Krzysztof Rogala
  
-==== Problem ====+===== Problem ​=====
 Wyobraźmy sobie bazę danych (już istniejącą). Jedni użytkownicy mogą czytać z niej dane, a innni je zmieniać. Ci pierwsi (dalej: czytelnicy) są niezadowoleni,​ ponieważ czasem z bazy odczytują nieaktualne lub bezsensowne dane. Ci drudzy (dalej: pisarze) także są niezadowoleni,​ ponieważ podczas oczekiwania na wprowadzenie poprawek do bazy, nic nie mogą robić. Rozwiązaniem tego problemu jest synchronizacja dostępu. Nie może być tak, że jednocześnie ktoś pisze do bazy i z niej czyta. Preferowani w takiej sytuacji będą pisarze. Ponadto założyłem Wyobraźmy sobie bazę danych (już istniejącą). Jedni użytkownicy mogą czytać z niej dane, a innni je zmieniać. Ci pierwsi (dalej: czytelnicy) są niezadowoleni,​ ponieważ czasem z bazy odczytują nieaktualne lub bezsensowne dane. Ci drudzy (dalej: pisarze) także są niezadowoleni,​ ponieważ podczas oczekiwania na wprowadzenie poprawek do bazy, nic nie mogą robić. Rozwiązaniem tego problemu jest synchronizacja dostępu. Nie może być tak, że jednocześnie ktoś pisze do bazy i z niej czyta. Preferowani w takiej sytuacji będą pisarze. Ponadto założyłem
 także, że na raz tylko jeden czytelnik korzysta z bazy. Co więcej, wprowadzamy rozdzielenie wywołania metody i jej wykonania, co pozwala pisarzom natychmiast przejść do innych zadań. także, że na raz tylko jeden czytelnik korzysta z bazy. Co więcej, wprowadzamy rozdzielenie wywołania metody i jej wykonania, co pozwala pisarzom natychmiast przejść do innych zadań.
 +
 +==== include'​y i stałe globalne ====
 <code cpp> <code cpp>
 #include <​queue>​ #include <​queue>​
Linia 21: Linia 23:
 </​code>​ </​code>​
 ---- ----
-==== Budowa "​aktywnego obiektu"​ ====+===== Budowa "​aktywnego obiektu" ​=====
 Wzorzec "​aktywny obiekt"​ wykorzystuje następujące klasy: Wzorzec "​aktywny obiekt"​ wykorzystuje następujące klasy:
 **Proxy** - klasa widoczna dla programisty,​ która zawiera interfejs obiektu **Proxy** - klasa widoczna dla programisty,​ która zawiera interfejs obiektu
aktywny_obiekt.txt · ostatnio zmienione: 2008/04/15 20:43 przez krogala