Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 24045|Jawab: 0

[Program Konsol] pembelajaran kata kunci yang mudah menguap di .net/C#

[Salin tautan]
Diposting pada 23/05/2018 11.23.40 | | | |
Tautan MS:Login hyperlink terlihat.

Kata kunci volatile menunjukkan bahwa bidang dapat dimodifikasi oleh beberapa utas yang dijalankan secara bersamaan. Bidang yang dinyatakan sebagai volatil tidak dibatasi oleh pengoptimalan kompiler (dengan asumsi diakses oleh satu utas). Ini memastikan bahwa bidang dirender dengan nilai terbaru setiap saat.

Pengubah volatil biasanya digunakan untuk bidang yang diakses oleh beberapa utas tetapi tidak menserialisasikan akses menggunakan pernyataan kunci.

Kata kunci volatil dapat diterapkan ke jenis bidang berikut:

  • Jenis kutipan.
  • Jenis penunjuk (dalam konteks yang tidak aman). Perhatikan bahwa meskipun penunjuk itu sendiri dapat berubah, objek yang diarahkannya tidak dapat diubah. Dengan kata lain, "penunjuk ke objek yang dapat diubah" tidak dapat dideklarasikan.
  • jenis seperti sbyte, byte, short, ushort, int, uint, char, float, dan bool.
  • Jenis enum dengan salah satu jenis dasar berikut: byte, sbyte, short, ushort, int, atau uint.
  • Parameter jenis generik yang dikenal sebagai jenis referensi.
  • IntPtr dan UIntPtr.


Kata kunci variabel hanya dapat diterapkan ke bidang kelas atau struktur.Variabel lokal tidak dapat dinyatakan sebagai volatile


Tidak ada lagi omong kosong, tulis loop untuk mengujinya:

Mari kita uji 10.000 kali dalam satu lingkaran,menemukan bahwa output nilai adalah benar, tetapi,Itu tidak menjelaskanvolatile aman untuk benangKarena, jika Anda mengujinya berkali-kali, Anda akan menemukan bahwa akan ada kesalahan perhitungan! Karena ada kemungkinan hasil yang benar dan kemungkinan hasil yang salah



Kode:



Mari kita uji 100.000 loop lagi, dan kita dapat menemukan bahwa nilai a salah, karena semakin kecil jumlah loop, semakin kecil kemungkinan kesalahan, dan kesalahannya tidak begitu jelas, sama seperti tidak ada kesalahan setelah 10.000 loop barusan.

Pada saat ini, kami menambahkan kunci untuk menguji, dan dapat dilihat bahwa nilai a dihitung dengan benar seperti yang kami harapkan.



Kode:



Ringkasan: volatil tidak menjamin keamanan ulir, seperti yang Anda lihat pada contoh di atas.




Mantan:Unduh alat pengambilan paket smsniff 2.0 versi Cina
Depan:Solusi VS Remote Debug "Operasi debug membutuhkan waktu lebih lama dari yang diharapkan"
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com