Bagaimana mencegah eksekusi kode hingga semua pemicu dimatikan (atau penghitung waktu berakhir) | Oleh Vishal Ratna | Juni 2022

Programming

[ad_1]
Hai Sob di suratpembaca.web.id. Hari ini kita akan membicarakan tentang Linux yaitu Bagaimana mencegah eksekusi kode hingga semua pemicu dimatikan (atau penghitung waktu berakhir) | Oleh Vishal Ratna | Juni 2022

.

Sekiranya artikel mengenai Bagaimana mencegah eksekusi kode hingga semua pemicu dimatikan (atau penghitung waktu berakhir) | Oleh Vishal Ratna | Juni 2022

dapat memberikan manfaat untuk Sahabat semua. Langsung saja baca artikel ini
sampai tuntas.

Tanam Bom MultiPemicu

Foto oleh Jason Mitrione di Unsplash

Terakhir kali Anda berada dalam situasi di mana Anda harus berhenti mengeksekusi kode (jangan menunggu) n Situasinya benar, atau lihat apa yang terjadi n Kondisi tidak berhasil dan tetap menjalankan kode setelah tenggat waktu – bagaimana Anda memperbaiki masalah?

Solusi pertama yang terlintas dalam pikiran ketika melihat masalah ini adalah solusi Java CountDownLatch. Tombol hitung mundur memiliki satu await() Panggilan yang menyebabkan string panggilan menunggu n Nomor countDowns() ditelepon. Di sini, kami tidak ingin masalah menunggu. Ini lebih seperti kami menggunakan aplikasi dan kapan’nPeristiwa terjadi, kami mengeksekusi kode, atau jika tenggat waktu dibatalkan, kami tetap mengeksekusi kode.

Persyaratan ini berlaku untuk beberapa string, tetapi kita harus memastikan bahwa kode tersebut tidak dieksekusi lebih dari sekali. Ketika penghitung waktu berakhir dan situasinya terjadi pada saat yang sama, kita perlu melihat masalah dan memastikan bahwa kode tidak diaktifkan beberapa kali atau tidak dalam keadaan tidak stabil.

Kita dapat menggunakan pemeriksaan if-else dan boolean untuk mempertahankan status quo. Namun, kami menghadapi situasi seperti itu beberapa kali saat bekerja di tim Microsoft. Oleh karena itu, tidak terukur dan rentan terhadap kesalahan.

Contohnya mungkin kita ingin memblokir beberapa kode yang tidak penting (seperti pengambilan gambar sebelumnya, menyegarkan token autentikasi, memuat avatar pengguna, dll.) hingga beberapa jalur kode penting diselesaikan (beberapa jalur kritis, 1. Layar ditampilkan, 2. Jumlah pesan telah diperbarui dan 3. Halaman saat ini telah menyelesaikan sinkronisasi), yang dilacak sebagai OKR program penting dan mempengaruhi kinerja program secara keseluruhan. Jadi pada dasarnya kami terus mengerjakan bagian lain untuk melakukan 1, 2 dan 3. Dan jika beberapa kesalahan muncul dan satu atau semua langkah tidak diikuti, maka timeline akan membantu kita mengeksekusi kode.

Jika kontak Anda terkait dengan kontak siklus hidup Android, kami telah membuat struktur yang disebut LazyLifecycleCallbacksYang dapat Anda periksa di sini, yang memiliki onLazyCreate()kan onLazyStart()Dan onLazyResume()Kami telah membangun struktur ini menggunakan konsep yang disebut BarrierTapi segera sadar barrier Ini memiliki keterbatasan, jadi kami menerapkannya kembali menggunakannya MultiTriggerBomb.

Kembali ke topik, kami membutuhkan sesuatu yang umum yang akan berfungsi dalam berbagai situasi, aman melalui utas, dan mudah dipasang oleh pengembang. Selain itu, telah diuji dengan benar sehingga kami dapat mempercayai kinerjanya.

Dulu terlihat seperti bom multi-pemicu. Sebuah bom memiliki beberapa pemicu yang harus ditekan sebelum bom tersebut meledak, dan sebuah pengatur waktu terpasang padanya. Ini terlihat seperti ini:

* |-----------------------------------------------|
* | |
* | [s1] --- [s2] --- [s3] ---[s4] --- [s5] --- | ----> [CHARGE]
* | | ^
* |------------|----------------------------------| |
* | |
* |________________t seconds__________________|

Saya merasa akan sangat bagus jika saya bisa membangun level API yang menyerupai bagaimana bom sungguhan akan berinteraksi. Pengembang dapat dengan mudah berkomunikasi dengannya dan istilah baru diperkenalkan untuk memecahkan masalah jenis ini. Jadi API yang bocor adalah sebagai berikut:

var hasExploded = false
private set
var isPlanted = false
private set
private val charge: () -> Unitfun plant()
fun down(cause: String = "")
fun tryDiffuse()
private fun explode()

Sama seperti bom sungguhan, ketika bom dibuat, muatan ditempatkan di dalamnya, Anda bisa plant() Ini memulai timer pada waktu yang sama. Anda perlu untuk mendorong pelatuknya down() Tombol. Dan ketika semua pemicunya mati atau timernya habis, bomnya meledak. Itu juga bisa menjadi bom diffused() Sebelum ledakan

Sekarang saya tahu semua kontrak yang harus dipenuhi oleh bom itu, dan kami semua bisa memahaminya. Bukankah begitu? Kemudian saya menulis pertunjukan yang sebenarnya.

MultiPemicuBomb.kt

Untuk menggunakan ini, kita perlu menulis kode sederhana:

// Create a bomb.
multiTriggerBomb = MultiTriggerBomb(5, timerDuration)
// Code that needs to get fired on explosion
// plant it!
multiTriggerBomb?.plant()

Hubungi kapan pun salah satu syaratnya benar down() Dengan parameter alasan opsional.

multiTriggerBomb?.down("some condition satisfied")

Ketika semua kondisi terpenuhi atau penghitung waktu berakhir, bom kami meledak dan mengeksekusi kode yang tertanam di dalamnya.

Beginilah cara kami memasang bom di basis kode kami!

Tip Profesional – Anda dapat menggunakan bom untuk menghubungkan beberapa panggilan / acara / pemeriksaan di basis kode dan menembak potongan kode dan mengambil manajemen status dan keamanan string di luar kotak.

Demikian artikel tentang Bagaimana mencegah eksekusi kode hingga semua pemicu dimatikan (atau penghitung waktu berakhir) | Oleh Vishal Ratna | Juni 2022

, terimakasih telah mengunjungi website ini, mudah-mudahan postingannya ada manfaatnya ya.

[ad_2]

Source link

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan.