Secara umum bagaimana cara kerja Penangan Acara bekerja?

14

Ini adalah topik umum, Bagaimana cara Penangan Acara berfungsi?

Ini berarti di balik layar - apa yang terjadi ketika mereka dibuat.

Saya punya ide kasar - tetapi ingin memastikannya.

JHarley1
sumber
Brilliant, pola Observer adalah apa yang saya temukan: Saya telah membaca di web tentang masalah ini dan membaca makalah yang bagus tentang masalah Pemrograman Berbasis Acara. Di dalam makalah ini dibahas proses Pola Desain Penangan. Di mana Anda memiliki uap Peristiwa yang datang ke Dispatcher yang kemudian mengambil peristiwa itu dan menganalisisnya untuk menentukan jenis acara, dan kemudian mengirim setiap peristiwa ke penangan yang dapat menangani acara dari jenis itu.
JHarley1
1
Ini menjelaskan bagaimana pengirimnya merupakan loop tak terbatas yang hanya berhenti ketika (misalnya dengan Aplikasi GUI) program ditutup. Dan kemudian bagaimana Anda memiliki Pola Pengamat (atau Pola Publikasikan / Berlangganan) yang banyak digunakan untuk melakukan Pemrograman Berbasis Acara dengan kerangka kerja GUI dan cara kerjanya pada prinsip Hollywood "Jangan Hubungi Kami, Kami Akan Memanggil Anda" .
JHarley1
Apakah Anda mengatakan penjelasan di atas memadai?
JHarley1
Tergantung. Untuk tinjauan tingkat tinggi, tidak masalah. Namun, untuk penjelasan yang komprehensif dan menyeluruh, heck no. Tentu saja penjelasan seperti itu mungkin akan banyak halaman pekerjaan karena ini bisa lebih mewah karena Anda bisa masuk ke web vs desktop misalnya.
JB King

Jawaban:

15

Pada level rendah, event handler sering bekerja dengan polling perangkat dan menunggu gangguan perangkat keras. Intinya, thread latar belakang blok, sambil menunggu gangguan perangkat keras terjadi. Ketika interupsi terjadi, fungsi polling berhenti memblokir. Aplikasi kemudian dapat mengetahui gagang perangkat mana yang menyebabkan interupsi, dan jenis interupsi apa itu, dan kemudian bertindak sesuai (misalnya dengan menjalankan fungsi event handler). Ini biasanya dilakukan dalam utas terpisah sehingga itu terjadi secara tidak sinkron.

Tentu saja, cara ini sebenarnya diterapkan sangat bervariasi tergantung pada OS dan jenis perangkat / input. Pada sistem UNIX, salah satu cara yang penangan event dilaksanakan untuk hal-hal seperti soket, serial atau USB port adalah melalui pilih atau jajak pendapat panggilan sistem. Satu atau lebih deskriptor file / perangkat (yang dikaitkan dengan perangkat, seperti soket jaringan, port serial / USB, dll) diteruskan ke pollpemanggilan sistem - yang disediakan untuk pemrogram melalui API C tingkat rendah. Ketika suatu peristiwa terjadi pada salah satu perangkat ini, (seperti katakanlah, beberapa data tiba pada port serial), panggilan sistem jajak pendapat berhenti memblokir, dan aplikasi kemudian dapat menentukan deskriptor perangkat yang menyebabkan peristiwa tersebut, dan jenis acara apa itu .

Pada Windows ini ditangani secara berbeda, tetapi konsep dasarnya sama.

Charles Salvia
sumber