Context: Dalam rekayasa perangkat lunak, double-checked locking (juga dikenal sebagai "double-checked locking optimization") adalah pola desain perangkat lunak yang digunakan untuk mengurangi overhead memperoleh kunci dengan menguji kriteria penguncian ("tips kunci") sebelum memperoleh kunci. Penguncian hanya terjadi jika pemeriksaan kriteria penguncian menunjukkan bahwa penguncian diperlukan. Pola, ketika diimplementasikan dalam beberapa kombinasi bahasa / perangkat keras, dapat tidak aman. Kadang-kadang, dapat dianggap sebagai anti-pola. Biasanya digunakan untuk mengurangi overhead penguncian saat menerapkan "inisialisasi malas" dalam lingkungan multi-thread, terutama sebagai bagian dari pola Singleton. Inisialisasi malas menghindari menginisialisasi nilai sampai pertama kali diakses.

Apakah double check penguncian aman?

Penguncian yang diperiksa dua kali dapat tidak aman dalam beberapa situasi dan kadang-kadang dianggap sebagai anti-pola. Namun, dapat diterapkan dengan cara yang aman.