Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 17802|Odpowiedź: 0

[Komunikacja] lock C #

[Skopiuj link]
Opublikowano 21.02.2019 09:43:39 | | |
1. Dlaczego blokada, a co jest zablokowane?

Gdy używamy wątków, najefektywniejszym sposobem jest oczywiście asynchroniczny, czyli każdy wątek działa jednocześnie, bez wzajemnego polegania i oczekiwania. Jednak gdy różne wątki muszą uzyskać dostęp do danego zasobu, potrzebny jest mechanizm synchronizacji, czyli przy odczytie i zapisie tego samego zasobu musimy sprawić, by zasób działał tylko przez jeden wątek jednocześnie, aby każda operacja była skuteczna i natychmiastowa, czyli aby zapewnić atomowość jej działania. lock jest najczęściej używaną metodą synchronizacji w C#, w formacie lock(objectA){codeB}.


lock(objectA){codeB} wydaje się prosty, ale w rzeczywistości ma trzy znaczenia, co jest niezbędne do właściwego użycia:
1. Czy obiektA jest zablokowany? Jeśli nie, zablokuję go, w przeciwnym razie poczekam aż obiekt A zostanie zwolniony.
2. Po zablokowaniu inne wątki nie mogą wywoływać kodu B ani używać obiektu A podczas wykonywania kodu B.
3. Po wykonaniu kodu B, obiekt zwolnienia A oraz kod B mogą być dostępne przez inne wątki.

2. Co się stało z zamkiem (tym)?

Przyjrzyjmy się przykładowi:

W wątku t1 LockMe wywołuje lock(this), czyli c1 w funkcji głównej, a gdy wywołuje lock(c1) w głównym wątku, musi poczekać na wykonanie bloku blokady w t1, zanim uda się uzyskać dostęp do c1, tzn. wszystkie operacje związane z c1 nie mogą zostać ukończone, więc widzimy, że nawet c1. DoNotLockMe() nie jest wykonywany.





Poprzedni:C# w części ArraySegment tablicy
Następny:Dogłębna praktyka Spring Boot. Chen Shaojian i SpringBoot szybko odkrywają + budują system mikroserwisowy
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com