Bagikan melalui


Mengatasi Kunci Oportunistik

Membuka kunci oportunistik adalah proses mengubah kunci yang dimiliki satu klien pada file sehingga klien lain dapat membuka file, dengan atau tanpa kunci oportunistik. Ketika klien lain meminta operasi terbuka, server menunda operasi terbuka dan memberi tahu klien yang memegang kunci oportunistik.

Klien yang memegang kunci kemudian mengambil tindakan yang sesuai dengan jenis kunci, misalnya mengabaikan buffer baca, menutup file, dan sebagainya. Hanya ketika klien yang memegang kunci oportunistik memberi tahu server bahwa operasinya telah selesai, barulah server membuka file untuk klien yang meminta operasi tersebut. Namun, ketika kunci tingkat 2 rusak, server melaporkan kepada klien bahwa kunci tersebut telah rusak tetapi tidak menunggu pengakuan apa pun, karena tidak ada data yang di-cache untuk disiram ke server.

Dalam mengakui pelanggaran kunci eksklusif apa pun (filter, tingkat 1, atau batch), pemegang kunci yang rusak tidak dapat meminta kunci eksklusif lainnya. Ini dapat menurunkan kunci eksklusif ke kunci level 2 atau bahkan tanpa kunci sama sekali. Pemegang biasanya melepaskan kunci dan menutup file ketika file itu memang akan ditutup.

Aplikasi diberi tahu bahwa kunci oportunistik dicabut dengan menggunakan anggota hEvent dari struktur OVERLAPPED yang terkait dengan file di mana kunci dicabut. Aplikasi juga dapat menggunakan fungsi seperti GetOverlappedResult dan HasOverlappedIoCompleted.