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

Melihat: 2976|Jawab: 2

[Sumber] Bagaimana Lazy di C# menjaga utas tetap aman

[Salin tautan]
Diposting pada 02/07/2023 21.41.55 | | |
Setelah .NET 4.0, jenis pemuatan lambat yang aman disediakan di .NET FrameworkMalas
Lazy mampu beroperasi di lingkungan multi-threaded, dijaminNilai DapatkanFungsi ini dijalankan hanya sekali, sehingga mengimplementasikanMode singleton

Di masa lalu, kami menggunakan kunci penilaian kuadrat untuk mengimplementasikan pola singleton, atau untuk memanfaatkan fungsi inisialisasi statis kelas
Dengan tipe Malas, proses ini disederhanakan dan kinerjanya lebih baik

Ketika Lazy dibuat, Anda dapat menentukan mode instalasi utas, saat ini ada dua mode,Publikasi SajaEkskusi dan Publikasi

Mode Publikasi Saja


1. Jalankan fungsi inisialisasi dan kotakkan ke dalam internalPetiketik, selesaikan masalah penilaian nilai null, jika kasus telah dibuat, itu akan mengembalikan null,Prosesnya tidak aman

2. Tentukan apakah m_boxed kosong, m_boxed bidang disimpan berdasarkan nilai, jika sama dengan kosong, diatur ke kotak, metode ini dapat memastikan atomisitas,Prosesnya aman untuk ulir

3. Jika CreateValue mengembalikan kosong, itu berarti bahwa utas lain telah membuat instans, lalu diatur ke instans yang sudah dibuat

4. Tandai metode inisialisasi sebagai inisialisasi, yang biasanya terjadi dalam kasus eksekusi bersamaan, dan jalankan CreateValue beberapa kali


Publikasi Sajadigunakan berdasarkanSaling Terkait.Bandingkan Pertukaran, kelas ini berisi metode atomisitasCAS (Bandingkan dan tukar)

CAS diimplementasikan menggunakan instruksi atom yang disediakan oleh CPU, dan versi runtime yang berbeda mungkin memiliki implementasi yang berbeda
Implementasi spesifik yang saling terkait Dalam metode asli, teman yang tertarik dapat memeriksa implementasi spesifik melalui kode coreclr/jvm

Dalam mode ini,Fungsi singleton dapat berjalan beberapa kali, tetapi pada akhirnya dijamin hanya satu instance yang akan diperoleh

Mode ExcutionDanPublikasi

Ekskusi dan Publikasimode yang digunakan dalam modeVolatile+MonitorMonitorItu adalahkunciImplementasi pernyataan, implementasi Monitor dalam kode asli, adalah kunci kelas berat

MonitorAntrean dan thread sleep didukung, yang dapat memastikan bahwa seluruh blok metode dijalankan dalam status threaded tunggal


Tautan asli:Login hyperlink terlihat.




Mantan:ASP.NET perbedaan antara ThreadStatic, CallContext, dan HttpContext
Depan:SQL Server mengkueri jumlah koneksi saat ini ke database
 Tuan tanah| Diposting pada 02/07/2023 21.42.16 |
 Tuan tanah| Diposting pada 04/07/2023 19.19.45 |
Pengoptimalan performa C#: Lazy menginisialisasi Lazy<T> dengan penundaan
https://www.itsvse.com/thread-7700-1-1.html
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