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

Widok: 14970|Odpowiedź: 3

[Źródło] [Rzeczywista walka]. NET/C# wykorzystuje SemaphoreSlim do ograniczenia współrzędnych metod wykonywania

[Skopiuj link]
Opublikowano 19.02.2022 21:23:20 | | | |
Wymagania: Ze względu na ograniczone zasoby sprzętowe program musi zużywać określoną ilość zasobów sprzętowych; w przypadku dużej równocześności, jeśli niektóre metody zużywające zbyt dużo zasobów programu nie są ograniczone (eksport dużej ilości danych do tabeli Excel), może to wpłynąć na niezdolność całego programu do zapewnienia normalnych usług, a także na normalne działanie systemu operacyjnego.

Semafor i SemaforSmukłe różnice

SemaphoreSlim i Semaphore są podobne pod względem funkcjonalności. SemaphoreSlim jest około 4 razy szybszy niż Semaphore, ale SemaphoreSlim nie może być używany do sygnalizacji międzyprocesowej.

Powodem poprawy wydajności jest to, że klasa SemaphoreSlim stanowi lekką alternatywę dla klasy Semaphore, która nie wykorzystuje semaforu jądra Windows. Zasadniczo, jeśli nie musisz nazywać semaforów, użyj klasy SemaphoreSlim.

SemaphoreSlim opiera się na SpinWait i Monitor, więc wątek czekający na zablokowanie zużywa okres cykli CPU, licząc na zdobycie blokady, zanim ustąpi miejsca kolejnemu wątkowi. Jeśli to się nie dzieje, wątek pozwala systemowi zmienić kontekst i spróbować ponownie, gdy system operacyjny ponownie zaplanuje ten wątek (zużywając kilka cykli CPU). Jeśli oczekiwanie jest długie, ten tryb może pochłaniać dużo cykli procesora. Najlepszym rozwiązaniem tej implementacji jest to, że przez większość czasu nie ma czasu oczekiwania i można uzyskać zamek niemal natychmiast.
Semafor opiera się na implementacjach w jądrze systemu, więc za każdym razem, gdy zostanie zablokowany, zajmuje to sporo cykli CPU, ale potem wątek po prostu hibernuje, aby uzyskać czas potrzebny na jej uzyskanie.

Dokumentacja semaforów:https://docs.microsoft.com/en-us ... aphore?view=net-6.0
Dokumentacja SemaphoreSlim:https://docs.microsoft.com/en-us ... reslim?view=net-6.0

Przed wykonaniem metody najczęściej stosowane metody oczekiwania są następująceZadzwoń zgodnie z rzeczywistą sytuacją swojej firmy

Wait(): Blokuje wątek, dopóki nie wejdzie do SemaphoreSlim.
Wait(0): Metoda nie zostanie zablokowana. Sprawdzi stan uchwytu oczekiwania i natychmiast wróci.
Wait: Blokuje bieżący wątek, dopóki nie wejdzie do SemaphoreSlim, przy jednoczesnym określeniu timeoutu za pomocą 32-bitowej liczby całkowitej ze znakiem.

Kod źródłowy przedstawia się następująco:

Przedstawienia przedstawiają się następująco:







Poprzedni:Linux Secretless Login (ssh) lub Secretless Copy (scp) na inne serwery
Następny:Linux wykorzystuje lookbusy do symulacji wykorzystania CPU
Opublikowano 19.02.2022 23:16:57 |
Naucz się uczyć...
Opublikowano 20.02.2022 22:19:24 |
test
 Ziemianin| Opublikowano 18.12.2024 20:40:10 |
Różnica między ManualResetEvent a AutoResetEvent wyuczona przez wątki C#
https://www.itsvse.com/thread-4810-1-1.html
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