Tag Archives: programming

Desain Buffer Multithread

Sedikit teknis barangkali, saya memiliki masalah dengan sinkronisasi dua buah thread. Katakanlah thread A, dan B dimana thread A memiliki dengan prioritas lebih tinggi akan menerima kiriman data untuk selanjutnya diproses dan hasilnya akan dikirimkan ke thread B. Masalah muncul ketika timing thread A tidak sama dengan B, dimana thread A dipicu oleh interrupt yang akan muncul saat kedatangan data, sedangkan thread B tidak memiliki karakteristik khusus pada timingnya (unpredictable) sehingga diasumsikan thread B memiliki waktu kemunculan (eksekusi) lebih lama dibanding thread A. Kemungkinan terburuk yang terjadi adalah ketika thread B sedang membaca data, thread A sudah melakukan penulisan ulang (overwrite) terhadap data yang dimiliki sehingga terjadi inkonsistensi yang membahayakan.

Didesainlah sebuah solusi menggunakan multibuffer kompleks menggunakan indeks dan sistem kunci, seperti banyak dicontohkan di internet namun ternyata sulit sekali diimplementasikan. Kendala utama adalah sistem yang masih belum stabil sehingga penambahan suatu subsistem yang sedemikian kompleks cenderung mengeluarkan banyak effort baik untuk desain implementasi maupun pengujian dan debugging-nya. Dengan waktu yang sedemikian singkat diputuskan menggunakan buffer statik sederhana yang hanya terdiri atas array dua dimensi dengan indeks dan stack penampung. Namun desain ini belum sempat dicobakan karena satu dan lain hal teknis lainnya.

Pesan moral dari cerita ini adalah jangan terlalu fokus pada hal kecil, tetap berpegang teguh pada gambar besarnya dan biarkan hati kecilmu bicara.

cakaran sederhana dengan satu jam perdebatan


State Obat Nyamuk

Posting kali ini tidak akan membahas tentang pro dan kontra penggunaan obat nyamuk bakar melainkan mengenai suatu state dalam troubleshooting terhadap suatu permasalahan di dunia programming. Dimulai pada pagi hari yang cerah ketika seorang dosen mengalami masalah saat memasukkan modul program yang telah dibuat kedalam suatu sistem berisi kumpulan yang telah teruji sebelumnya. Beliau mendapati keseluruhan sistem menjadi kacau setelah programnya digabungkan padahal program yang telah ia buat telah diuji dengan baik dan memenuhi segala kaidah pemrograman, sehingga beliau berkesimpulan bahwa sistem yang telah ada sebelumnya lah yang kelihatannya bermasalah.

Ketika disodorkan permasalahan ini, otak kecil saya yang tidak berpengalaman secara singkat menyimpulkan bahwasanya hal ini dapat saya definisikan sebagai “kesalahan terintegrasi”. Analoginya seperti memasukkan satu orang wanita alim kepada sekumpulan laki-laki alim. Apabila tiba-tiba terjadi kericuhan, kita tidak dapat menyalahkan kumpulan laki-laki tersebut karena mereka alim, namun juga bukan salah dari wanita karena dia juga alim, lalu apa yang salah? Apakah kedua hal tersebut memang tidak dapat disatukan ataukah harus mengorbankan beberapa laki-laki alim agar wanita alim dapat berbaur dengan baik?

Pemikiran yang saya lakukan selama beberapa jam membawa saya ke dalam sebuah keadaan yang saya namakan state “obat nyamuk”. Analoginya seperti terjebak di rute menyerupai obat nyamuk, dimana kita berada diujung dekat dengan bara api yang mulai menelan ruangan kita sedikit demi sedikit, cukup lama dan menyiksa hingga kita terpojok pada pusat obat nyamuk, namun seketika bara itu padam dan kita pun selamat dan bisa keluar dari maze tersebut. Intinya adalah kadangkala butuh waktu yang lama dan pressure yang ketat untuk menyelesaikan suatu pekerjaan sederhana, namun percayalah bahwa suatu permasalahan pasti ada solusinya, dan pada saatnya nanti segalanya akan semakin jelas, rintangan mulai hilang, dan anda akan menemukan jalan keluarnya 🙂

 

state obat nyamuk