Jak uniknąć wyścigu w wątkach?
Jak uniknąć wyścigu w wątkach?

Wideo: Jak uniknąć wyścigu w wątkach?

Wideo: Jak uniknąć wyścigu w wątkach?
Wideo: Race Conditions and How to Prevent Them - A Look at Dekker's Algorithm 2024, Listopad
Anonim

Warunki wyścigu można tego uniknąć poprzez odpowiednie wątek synchronizacja w krytycznych sekcjach. Wątek synchronizację można osiągnąć za pomocą zsynchronizowanego bloku Jawa kod. Wątek synchronizację można również osiągnąć za pomocą innych konstrukcji synchronizacji, takich jak blokady lub zmienne atomowe, takie jak Jawa.

Podobnie pyta się, czego potrzebujemy, aby wystrzegać się warunków wyścigu?

Do unikaj warunków wyścigowych, których potrzebujemy Wzajemne wykluczenie. Wzajemne wykluczanie to w pewien sposób upewnienie się, że jeśli jeden proces używa współdzielonej zmiennej lub pliku, inne procesy Wola być wykluczonym z czyn takie same rzeczy.

Następnie pojawia się pytanie, ile procesów jest dozwolonych w ich krytycznej sekcji, aby zapobiec wystąpieniu sytuacji wyścigu? Unikać Warunki wyścigu , wzajemne wykluczenie musi być egzekwowane w ciągu sekcje krytyczne . Zakazuje więcej niż jednego proces dostępu do pamięci współdzielonej w tym samym czasie. Gdyby nie dwa procesy wejść ich krytyczne sekcje w tym samym czasie, nie Warunki wyścigu.

Aby wiedzieć, co to jest wyścig w wątkach?

A warunki wyścigu występuje, gdy dwa lub więcej wątki mogą uzyskać dostęp do udostępnionych danych i jednocześnie próbują je zmienić. Ponieważ wątek algorytm planowania może przełączać się między wątki w dowolnym momencie nie znasz kolejności, w jakiej wątki spróbuje uzyskać dostęp do udostępnionych danych.

Jaki jest przykład wyścigu?

Prosty przykład z warunki wyścigu to włącznik światła. W niektórych domach jest kilka włączników światła podłączonych do wspólnego oświetlenia sufitowego. W przypadku stosowania tego typu obwodów pozycja przełącznika staje się nieistotna. Jeśli światło jest włączone, przesunięcie dowolnego przełącznika z jego aktualnej pozycji powoduje wyłączenie światła.

Zalecana: