Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24045|Risposta: 0

[Programma Console] apprendimento volatile di parole chiave in .net/C#

[Copiato link]
Pubblicato su 23/05/2018 11:23:40 | | | |
MS Link:Il login del link ipertestuale è visibile.

La parola chiave volatile indica che un campo può essere modificato da più thread che si eruono contemporaneamente. I campi dichiarati come volatili non sono limitati dall'ottimizzazione del compilatore (supponendo che siano accessibili tramite un singolo thread). Questo garantisce che il campo venga sempre visualizzato con il valore più recente.

Il modificatore volatile è tipicamente usato per campi che sono accessibili da più thread ma non serializzano l'accesso tramite un'istruzione lock.

Le parole chiave volatili possono essere applicate ai seguenti tipi di campi:

  • Tipo di citazione.
  • Tipo di puntatore (in un contesto non sicuro). Si noti che, sebbene il puntatore stesso possa essere mutabile, l'oggetto a cui punta non può esserlo. In altre parole, "puntatore a un oggetto mutabile" non può essere dichiarato.
  • Tipi come Sbyte, Byte, Short, Ushort, Int, Uint, Char, Float e Bool.
  • Un tipo enum con uno dei seguenti tipi di base: byte, sbyte, short, ushort, int o uint.
  • Parametri generici di tipo noti per essere tipi di riferimento.
  • IntPtr e UIntPtr.


Le parole chiave variabili possono essere applicate solo ai campi di una classe o struttura.Le variabili locali non possono essere dichiarate volatili


Niente più sciocchezze, scrivi un ciclo per testarlo:

Testiamolo 10.000 volte in un loop,si è trovato che l'output di un valore è corretto, ma,Non spiegaVolatile è sicuro per la filettaturaPerché, se lo testi molte volte, scoprirai che ci saranno errori di calcolo! Perché c'è la possibilità di un risultato corretto e una possibilità di un risultato sbagliato



Codice:



Testiamo di nuovo 100.000 loop, e possiamo scoprire che il valore di a è errato, perché più piccolo è il numero di loop, minore è la probabilità di errore, e l'errore non è così evidente, proprio come non c'è stato errore dopo 10.000 loop poco fa.

In questo momento, aggiungiamo un blocco per testare e si può vedere che il valore di a viene calcolato correttamente come ci aspettavamo.



Codice:



Sommario: volatile non garantisce la sicurezza del thread, come puoi vedere nell'esempio sopra.




Precedente:Scarica lo strumento di raccolta di pacchetti smsniff versione cinese 2.0
Prossimo:VS Remote Debug "Soluzione di debug richiede più tempo del previsto"
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com