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

Widok: 24045|Odpowiedź: 0

[Program konsolowy] Ulotne uczenie słów kluczowych w .net/C#

[Skopiuj link]
Opublikowano 23.05.2018 11:23:40 | | | |
Link do pani:Logowanie do linku jest widoczne.

Słowo kluczowe zmienne wskazuje, że pole może być modyfikowane przez wykonanie wielu wątków jednocześnie. Pola zadeklarowane jako ulotne nie są ograniczone przez optymalizację kompilatora (zakładając, że są dostępne przez jeden wątek). Zapewnia to, że pole jest zawsze wyświetlane z najnowszą wartością.

Modyfikator ulotności jest zazwyczaj używany dla pól dostępnych przez wiele wątków, ale nie serializują dostępu za pomocą instrukcji blokady.

Zmienne słowa kluczowe można stosować do następujących typów pól:

  • Typ cytowania.
  • Typ wskaźnika (w niebezpiecznym kontekście). Należy zauważyć, że choć sam wskaźnik może być zmienny, obiekt, na który wskazuje, nie może być zmienny. Innymi słowy, "wskaźnik do obiektu zmiennego" nie może być zadeklarowany.
  • Typy takie jak sbyte, byte, short, ushort, int, uint, char, float i bool.
  • Typ enum o jednym z następujących typów bazowych: bajt, sbyte, short, ushort, int lub uint.
  • Ogólne parametry typu, które są znane jako typy referencyjne.
  • IntPtr i UIntPtr.


Zmienne słowa kluczowe mogą być stosowane tylko do pól klasy lub struktury.Zmienne lokalne nie mogą być zadeklarowane jako zmienne ulotne


Koniec z bzdurami, napisz pętlę, żeby to przetestować:

Sprawdźmy to 10 000 razy w pętli,stwierdził, że wyjście wartości a jest poprawne, ale,To nie wyjaśniaVolatile jest bezpieczny dla niciBo jeśli testujesz to wielokrotnie, zauważysz, że pojawią się błędy obliczeniowe! Ponieważ istnieje szansa na poprawny wynik i ryzyko błędnego wyniku



Kod:



Przetestujmy ponownie 100 000 pętli i możemy okazać, że wartość a jest błędna, ponieważ im mniejsza liczba pętli, tym mniejsze ryzyko błędu, a błąd nie jest tak oczywisty, tak jak nie było błędu po 10 000 pętli przed chwilą.

W tym momencie dodajemy blokadę do testu i widać, że wartość a została obliczona poprawnie, zgodnie z oczekiwaniami.



Kod:



Podsumowanie: lotny nie gwarantuje bezpieczeństwa gwintu, jak widać na powyższym przykładzie.




Poprzedni:Pobierz narzędzie do przechwytywania pakietów smsniff 2.0 w chińskiej wersji
Następny:Rozwiązanie VS Remote Debug "Operacja debugowania trwa dłużej niż oczekiwano"
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