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

Melihat: 17802|Jawab: 0

[Komunikasi] kunci C #

[Salin tautan]
Diposting pada 21/02/2019 09.43.39 | | |
1. Mengapa mengunci dan apa yang terkunci?

Ketika kita menggunakan utas, cara yang paling efisien tentu saja asinkron, yaitu setiap utas berjalan pada saat yang sama, tanpa saling mengandalkan dan menunggu. Namun, ketika utas yang berbeda perlu mengakses sumber daya tertentu, diperlukan mekanisme sinkronisasi, yaitu, saat membaca dan menulis sumber daya yang sama, kita perlu membuat sumber daya hanya dioperasikan oleh satu utas secara bersamaan untuk memastikan bahwa setiap operasi efektif dan segera, yaitu untuk memastikan atomisitas operasinya. lock adalah metode sinkronisasi yang paling umum digunakan di C#, dalam format lock(objectA){codeB}.


lock(objectA){codeB} tampak sederhana, tetapi sebenarnya memiliki tiga arti, yang penting untuk menggunakannya dengan tepat:
1. Apakah objectA terkunci? Jika tidak, saya akan menguncinya, jika tidak, tunggu sampai objectA dirilis.
2. Setelah penguncian, utas lain tidak dapat memanggil kodeB atau menggunakan objekA selama eksekusi kodeB.
3. Setelah mengeksekusi codeB, release objectA, dan codeB dapat diakses oleh thread lain.

2. Apa yang terjadi dengan kunci (ini)?

Mari kita lihat contohnya:

Di utas t1, LockMe memanggil lock(this), yaitu c1 dalam fungsi utama, dan saat memanggil lock(c1) di utas utama, ia harus menunggu blok kunci di t1 dijalankan sebelum mengakses c1, yaitu, semua operasi terkait c1 tidak dapat diselesaikan, jadi kita melihat bahwa bahkan c1. DoNotLockMe() tidak dieksekusi.





Mantan:C# di bagian array ArraySegment
Depan:Praktik mendalam dari Spring Boot. Chen Shaojian dan SpringBoot mengungkapkan + dengan cepat membangun sistem layanan mikro
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