Programy powodują konflikty, gdy oba próbują użyć tego samego zasobu. Gdy wiele programów próbuje działać jednocześnie na zasobie, istnieje ryzyko problemów z współbieżnością . Problemy z współbieżnością występują, gdy jeden proces dokonuje zmiany zasobu, a drugi program (który był w trakcie własnej modyfikacji zasobu) nie jest tego świadomy, a zatem nie jest w stanie go dostosować.
Oto kilka przykładów problemów z współbieżnością podręczników.
Problem z ostatnimi zwycięstwami
Wyobraź sobie, że używasz katalogu FTP do udostępniania dokumentu, w którym Ty i kolega współpracujecie nad dokumentem. pobierasz dokument, edytujesz go i publikujesz ponownie, podobnie jak twój kolega.
- Pobierz dokument i rozpocznij zestaw zmian, który zajmuje 1 godzinę.
- Twój współpracownik pobiera dokument w tym samym czasie, co Ty, ale wypełnienie i ponowne załadowanie zmian zajmuje tylko pół godziny.
Wynik: po przesłaniu dokumentu zastępujesz ich zmiany i są one tracone.
Nieaktualne dane
W tym samym scenariuszu Twój kolega dokonuje niezbędnych zmian, nie informując o tym. twoja kopia pliku nie ma zmian,
Wynik: sam piszesz te same zmiany w nieco innych słowach lub, co gorsza, odpychasz paskudny e-mail o tym, jak go brakuje.
Wydaje się to prostym scenariuszem, ale w zaawansowanych przypadkach, takich jak bazy danych z wieloma dostępem, jeśli wybierzesz rekordy w tej samej milisekundie, gdy ktoś je aktualizuje, możesz napotkać poważne problemy.
Złe obliczenia
Małżeństwo ma wspólne konto bankowe i karty bankomatowe. Mają na koncie 1000 USD. W codziennym życiu znajdują się po przeciwnych stronach miasta i oboje uzyskują dostęp do bankomatu w tym samym momencie. Oboje wypłacają 1000 USD. Zarówno bankomaty wiedzą, że saldo wynosi 1000, więc pozwalają na wycofanie, a następnie zapisują w centralnej bazie danych, że nowe saldo wynosi 0.
Wynik: bank ma obecnie 1000 USD i nawet o tym nie wie.
We wszystkich tych przykładach było wiele podmiotów, które wykonywały działania na udostępnionym zasobie w tym samym czasie lub mniej więcej w tym samym czasie. Stąd terminy „współbieżność” lub „synchroniczność”.
Rozwiązania
Istnieje kilka sposobów radzenia sobie z tego rodzaju problemami. Jednym z nich jest użycie oprogramowania, które arbitrażuje między wieloma stronami uzyskującymi dostęp do zasobu. Te programy arbitrów mają dwie opcje, w zależności od zakresu i przewidywalności operacji:
- Inteligentnie scal operacje
- Zablokuj / zablokuj jedną z dwóch operacji, aż pierwsza zauważona operacja zakończy się.
Możliwe jest również blokowanie / blokowanie, pod warunkiem, że oba programy są zaprojektowane do sprawdzania wspólnej flagi wskazującej stan zasobu. zazwyczaj wymaga to niestandardowego opracowania.
Twoja odpowiedź
W konkretnym przypadku zasobami są pliki na dysku. Synchroniczność pochodzi z takich zdarzeń, jak odczyt / zapis pliku, które wyzwalają skanowanie podczas dostępu w obu programach AV.
Windows działa jako arbiter do rozwiązywania problemów z współbieżnością systemu plików poprzez blokowanie plików, gdy programy otwierają je dla określonych operacji.
Oznacza to, że oba programy ścigają się, aby uzyskać dostęp do pliku, a ktokolwiek się tam pojawi pierwszy, otrzymuje blokadę. Na niskim poziomie powoduje to pewne przeładowanie dysku, ponieważ oba programy rozpoczynają własne działania we / wy, zmuszając sprzęt do wykonywania obu zadań osobno, ale jednocześnie przeplatając instrukcje we / wy, czyniąc oba znacznie mniej wydajnymi, a ostatecznie tylko jednym z nich wygra. drugi zakręci się i zaczeka na ustanowienie własnego zamka.