Udostępnij za pośrednictwem


DA0038: Twierdzeniom wysokie stawki Lock

Identyfikator reguły

DA0038

Kategoria

.NET Framework użycia

Metoda profilowania

Pobieranie próbek

Oprzyrządowanie

.NET pamięci

Wiadomości

Wysoki stopień.NET Lock twierdzeniom ma miejsce.Proszę zbadać przyczynę tego rywalizacji blokad, uruchamiając profilu współbieżności.

Typ reguły

Informacje

Gdy profil za pomocą pobierania próbek.NET pamięci lub zasobów metody rywalizacji, musi zebrać co najmniej 25 próbek do wyzwolenia tej reguły.

Przyczyna

Dane wydajności systemu, zebrane z danymi profilowania wskazuje, że znaczny stopień twierdzeniom lock wystąpił podczas wykonywania aplikacji.Należy wziąć pod uwagę profilowanie ponownie znaleźć przyczynę twierdzeniom przy użyciu współbieżności, metoda profilowania.

Opis reguły

Blokady są używane do ochrony krytycznych sekcje kodu, które muszą być wykonywane szeregowo przez jeden wątek jednocześnie w aplikacji wielowątkowych.Microsoft.NET języka wspólnego (CLR) uruchomieniowej zapewnia pełny zestaw synchronizacji i blokowanie obiektów pierwotnych.Na przykład w języku C# obsługuje instrukcji lock (SyncLock w języku Visual Basic).Zarządzanej aplikacji można wywołać metody Monitor.Enter i Monitor.Exit w przestrzeni nazw System.Threading do nabywania i Zwolnij blokadę bezpośrednio..NET Framework obsługuje dodatkowe synchronizacji i blokowanie obiektów pierwotnych, łącznie z klas, które obsługują muteksy, ReaderWriterLocks i semafory.Aby uzyskać więcej informacji, zobacz Omówienie synchronizacyjne w.NET Framework Developer's Guide w witrynie MSDN w sieci Web..NET Framework klasy są same warstwami przy użyciu niższy poziom synchronizacji usług wbudowanych w system operacyjny Windows.Należą do sekcji krytycznej obiektów i wiele różnych oczekiwania i Zdarzenie sygnalizacji funkcje.Aby uzyskać więcej informacji, zobacz synchronizacji sekcji Win32 and COM Development w bibliotece MSDN

Oba leżące u podstaw.NET Framework są klasy i obiekty rodzime systemu Windows, które są używane do synchronizacji i blokowanie pamięci współużytkowanej, że lokalizacje, które muszą być zmieniane przy użyciu blokujących operacji.Blokujących operacje użycia specyficzne dla sprzętu instrukcji, które działają na pamięci współużytkowanej lokalizacji zmianę ich stanu za pomocą atomowej operacji.Atomowej operacji są gwarantowane być spójne we wszystkich procesorów w komputerze.Zamki i elementów WaitHandle są.NET obiektów, które automatycznie użyj blokujących operacji, gdy są one ustawić lub zresetować.Mogą istnieć inne pamięci współużytkowanej struktur danych w aplikacji, który wymaga również przy użyciu operacji blokujących aktualizowane w sposób bezpieczny wątku.Aby uzyskać więcej informacji, zobacz Operacji blokujących w.NET Framework sekcji biblioteki MSND

Synchronizacja i blokowanie są mechanizmy służące do zapewnienia poprawnego wykonania wielowątkowości aplikacji.Każdy wątek wielowątkowych aplikacji jest jednostką wykonania niezależnych, planowana niezależnie przez system operacyjny.Rywalizacji blokad występuje zawsze, gdy wątek, który próbuje uzyskać blokady jest opóźnione, ponieważ inny wątek jest gospodarstwo blokady.

Blokady często są zagnieżdżone.Zagnieżdżanie występuje, gdy wykonywanie sekcji krytycznej wątek wykonuje funkcję, która wymaga, innym blokady.Niektóre kwoty zagnieżdżanie lock jest nieuniknione.Twoje sekcji krytycznej może wywołać.NET Framework metoda polegająca na blokady w celu zapewnienia, że jest wielowątkowość.Wywołanie z niektórych sekcji krytycznej w aplikacji do metody RAM, która blokuje również za pomocą uchwytu różnych lock sprawia, że blokady zagnieździć.Zagnieżdżone blokowania warunków może prowadzić do realne trudnych do unravel i rozwiązywanie problemów z wydajnością.

Ta reguła jest uruchamiany podczas pomiarów wykonanych w trakcie wykonywania profilowania wskazywać istnieje zbyt dużą ilość rywalizacji blokad.Zablokuj twierdzeniom opóźnić wykonanie wątków, które oczekują na blokadę.Należy zbadać nawet stosunkowo małe ilości rywalizacji blokad jednostki badań lub testów obciążenia uruchomionych na dolnym końcu sprzętu.

[!UWAGA]

Gdy stawki twierdzeniom lock zgłoszone w profilowania danych jest zbyt wysoka, DA0039: Bardzo wysokie stawki z blokady twierdzeniom komunikat ostrzegawczy jest wywoływane zamiast tego komunikatu informacji.

Jak do zbadania ostrzeżenie

Kliknij dwukrotnie wiadomość, aby przejść do znaki widok danych profilowania.Znajdź .NET CLR LocksAndThreads\Contention stawki / s kolumny.Ustalić, czy poszczególnych faz wykonywania programu gdzie rywalizacji blokad jest cięższe niż inne faz.

Ta reguła jest uruchamiany tylko wtedy, gdy nie używasz współbieżności, metoda profilowania.Współbieżność, profilowania metoda jest najlepszym narzędziem do służy do diagnozowania problemów z wydajnością związanych z rywalizacji blokad w aplikacji.Zebrać współbieżności profilowania dane, aby zrozumieć blokowania zachowanie aplikacji.Obejmuje to zrozumienia blokad, które są silnie utrzymywał, jak długo czas wykonania wątku jest opóźnione oczekiwanie na contended blokady i jakie określony kod jest związany.Profile współbieżności zbiera dane na wszystkich twierdzeniom blokady, włączając blokowania zachowanie macierzystym urządzeń systemu Windows.NET Framework klas i odwołuje się do innych bibliotek strony trzeciej aplikacji.Aby uzyskać informacje o współbieżności profilowania z Visual Studio IDE, zobacz Zbieranie wątku i procesu współbieżności danych.Łącza do informacji na temat współbieżności profilowania z wiersza polecenia, zobacz Using the Concurrency Method to Collect Resource Contention and Thread Activity Data sekcji Przy użyciu profilowania metod zbierania danych wydajności z wiersza polecenia.