mekanisme lockedLoadData perlu mengurangi beban di server.
Sebelumnya ketika cache konfigurasi dibersihkan di situs yang di-load semua klien telah menghasilkan informasi yang sama yang secara signifikan meningkatkan beban cpu / io.
Dengan lockedLoadData, hanya satu klien yang akan menghasilkan cache dan yang lain akan menunggu.
Lebih detail tentang cara kerjanya.
Panggilan fungsi pertama "dapatkan data" panggilan balik dan jika mendapat data dari sekadar mengembalikannya (jadi jika data dalam cache, kode berfungsi seperti sebelumnya dan tidak menggunakan kunci apa pun).
Jika data tidak tersedia dan kunci terkunci, maka dalam loop kami mencoba memuat data sampai data akan didapat atau kunci dihapus.
Jika tidak ada kunci maka kami membuat kunci dan menghasilkan data di simpan di cache dan menghapus kunci dan mengembalikan data
PS: Kami mengirim perubahan ini seperti tambalan untuk salah satu klien dengan beban hingga 20 kRPM dan berfungsi setidaknya 3 bulan, tanpa masalah. Jadi mungkin masalah dalam kustomisasi / modul Anda (misalnya jika mereka merusak mekanisme cache)