Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 24045|Odpoveď: 0

[Konzolový program] Volatilné učenie kľúčových slov v .net/C#

[Kopírovať odkaz]
Zverejnené 23. 5. 2018 11:23:40 | | | |
Odkaz na MS:Prihlásenie na hypertextový odkaz je viditeľné.

Volatilné kľúčové slovo naznačuje, že pole môže byť modifikované viacerými vláknami vykonávajúcimi súčasne. Polia deklarované ako volatilné nie sú obmedzené optimalizáciou kompilátora (za predpokladu, že k nim pristupuje jedno vlákno). To zabezpečuje, že pole je vždy zobrazené s najnovšou hodnotou.

Volatilný modifikátor sa typicky používa pre polia, ku ktorým pristupuje viacero vlákien, ale neserializujú prístup pomocou príkazu lock.

Volatilné kľúčové slová možno aplikovať na nasledujúce typy polí:

  • Typ citácie.
  • Typ ukazovateľa (v nebezpečnom kontexte). Všimnite si, že hoci samotný ukazovateľ môže byť premenlivý, objekt, na ktorý ukazuje, nemôže byť meniteľný. Inými slovami, "ukazovateľ na meniteľný objekt" nemôže byť vyhlásený.
  • Typy ako sbyte, byte, short, ushort, int, uint, char, float a bool.
  • Enum typ s jedným z nasledujúcich základných typov: bajt, sbyte, short, ushort, int alebo uint.
  • Všeobecné typové parametre, ktoré sú známe ako referenčné typy.
  • IntPtr a UIntPtr.


Premenné kľúčové slová možno aplikovať iba na polia triedy alebo štruktúry.Lokálne premenné nemožno deklarovať ako volatilné


Žiadne ďalšie nezmysly, napíšte slučku na testovanie:

Otestujme to 10 000-krát v slučke,zistil, že výstup hodnôt a je správny, ale,Nevysvetľuje toVolatile je bezpečný pre nitePretože ak to otestujete viackrát, zistíte, že sa objavia chyby vo výpočte! Pretože existuje šanca na správny výsledok a šanca na nesprávny výsledok



Kód:



Otestujme znova 100 000 slučiek a zistíme, že hodnota a je nesprávna, pretože čím menší počet slučiek, tým menšia je pravdepodobnosť chyby, a chyba nie je taká zrejmá, rovnako ako po 10 000 slučkách nebola chyba práve teraz.

V tomto momente pridávame zámok na testovanie a je vidieť, že hodnota a je vypočítaná správne, ako sme očakávali.



Kód:



Zhrnutie: volatile nezaručuje bezpečnosť vlákien, ako vidíte v príklade vyššie.




Predchádzajúci:Stiahnite si nástroj na zachytávanie paketov smsniff 2.0 čínska verzia
Budúci:VS Remote Debug riešenie "Debug operácia trvá dlhšie, než sa očakávalo"
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com