Kata kunci yang tidak menentu dan mengunci perbandingan: Bilakah ia menggunakan tidak menentu?
Dalam persekitaran multi -threaded C#, kata kunci adalah penting untuk menyelesaikan masalah penyegerakan memori tertentu.
menggunakan dan batasan volatile
seperti yang dijelaskan oleh Eric Lippert, penyusun penunjuk kata kunci dan runtime mengelakkan pesanan dan mengoptimumkan kod untuk pembolehubah tertentu. Di samping itu, ia juga menunjukkan bahawa pemproses memastikan nilai terkini, walaupun ini perlu menggantung pemproses lain untuk cache dengan memori utama.
volatile
bila menggunakan tidak menentu dan bukannya mengunci
volatile
Kunci menjamin akses memori yang konsisten dan mencegah pelbagai benang daripada mengakses kawasan memori yang sama pada masa yang sama. Walaupun kunci menyediakan jaminan utama ini, mereka juga memperkenalkan overhead prestasi.
Apabila konsistensi memori diperlukan tetapi prestasi juga kritikal, penggunaan kata kunci boleh mengelakkan mengunci. Ini berlaku dalam:
Pembolehubah dikongsi di antara pelbagai benang, tetapi hanya satu benang yang ditulis.Nilai pembolehubah jarang diakses, dan pengubahsuaian jarang berlaku.
volatile
lebih banyak sumber
lebih banyak pandangan mengenai kerumitan:
volatile
volatile
Memahami pengaruh teknologi rendah dalam aplikasi multi -threaded
Atas ialah kandungan terperinci Bilakah saya harus menggunakan kata kunci yang tidak menentu di C# dan bukannya mengunci?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!