terminoloji
olay : Olabilecek bir şey türü.
olay ateşleme : Bir olayın belirli bir oluşumu; gerçekleşen bir olay.
Etkinlik dinleyicisi : Etkinlik ateşlemelerine bakan bir şey.
olay işleyicisi : Bir olay dinleyicisi bir olayın ateşlendiğini tespit ettiğinde meydana gelen bir şey.
olay abonesi : Etkinlik işleyicisinin araması gereken bir yanıt.
Bu tanımlar uygulamaya bağlı değildir, bu nedenle farklı şekillerde uygulanabilirler.
Bu terimlerden bazıları genellikle eşanlamlılar için yanlıştır, çünkü kullanıcıların aralarında ayrım yapmalarına gerek yoktur.
Ortak senaryolar
Programlama-mantık olayları.
Olay bazı yöntem çağrılır ne zaman olacağı.
Bir olay ateşleme , bu yönteme yapılan özel bir çağrıdır.
Olay dinleyicisi olay işleyicisi çağıran her olay ateş üzerinde deniyor olay yönteminde bir kanca.
Olay işleyicisi olay abonelerin bir koleksiyon çağırır.
Olay abone (ler) gerçekleştirmek türlü tedbiri (ler) sistem olayın oluşumu cevaben gerçekleşmesi demektir.
Harici etkinlikler.
Olay gözlenebilirlerinin anlaşılabilir bir dış oluyor.
Bir olayın ateşlenmesi , harici bir olayın gerçekleştiği olarak algılanabildiği zamandır.
Olay dinleyicisi bir şekilde sık sık yoklama tarafından, olay işten çıkarmaları algılar gözlemlenebilir (ler), ardından ateş bir olay tespit ettiğinde olay işleyicisi çağırır.
Olay işleyicisi olay abonelerin bir koleksiyon çağırır.
Olay abone (ler) gerçekleştirmek türlü tedbiri (ler) sistem olayın oluşumu cevaben gerçekleşmesi demektir.
Yoklama - olayın ateşleme mekanizmasına kanca takma
Başkaları tarafından yapılan mesele, oy kullanma sık sık gerekli değildir. Bunun nedeni, olay tetikleyicilerinin olayları otomatik olarak olay işleyicisini çağırmasıyla gerçekleştirilebilmesidir; bu, olaylar sistem düzeyinde meydana geldiğinde olayları uygulamanın en etkili yoludur.
Benzer şekilde, posta çalışanı kapınızı çalıyor ve postayı doğrudan size teslim ederse, posta kutunuzu her gün postayla kontrol etmeniz gerekmez.
Ancak, olay dinleyicileri de anket yaparak çalışabilir. Yoklama mutlaka belirli bir değeri veya gözlemlenebilir başka bir şeyi kontrol etmek zorunda değildir; daha karmaşık olabilir. Ancak, genel olarak, oy verme noktası, bir olaya cevap verilebilecek şekilde gerçekleştiği zaman çıkarımda bulunmak demektir.
Benzer şekilde, posta çalışanınız sadece postaları bıraktığında, posta kutunuzu her gün kontrol etmeniz gerekir. Posta görevlisine kapınızı çalma talimatı verirseniz, bu yoklama işini yapmak zorunda kalmazsınız, ancak bu genellikle bir olasılık değildir.
Zincirleme olay mantığı
Birçok programlama dilinde, sadece klavyedeki bir tuşa basıldığında veya belirli bir zamanda basılan bir olayı yazabilirsiniz. Bunlar dış olaylar olsa da, onlar için anket yapmanız gerekmez. Neden?
Bunun nedeni işletim sisteminin sizin için oy vermesidir. Örneğin, Windows klavye durumu değişiklikleri gibi şeyleri kontrol eder ve bir tanesini tespit ederse olay abonelerini arayacaktır. Bu nedenle, bir klavye basın etkinliğine abone olduğunuzda, aslında anket yapan bir etkinliğe abone olan bir etkinliğe abone olursunuz.
Benzer şekilde, bir apartman kompleksi yaşadığınızı ve bir posta görevlisinin postaları ortak bir posta giriş alanına bıraktığını söyleyin. Daha sonra, işletim sistemi benzeri bir çalışan bu postayı herkes için kontrol edebilir ve bir şeyler alanların dairelerine posta gönderebilir. Bu, herkesi posta-makbuz alanını sorgulamak zorunda bırakmamaktan kurtarıyor.
Sezgim, olay dinleyicisinin olayın başlatılıp başlatılmadığını sürekli olarak kontrol ettiğini, yani senaryomda, olayın başlatıldığı her kareyi kontrol etmekten farklı olmayacağını varsayıyordu.
Sınıftaki tartışmaya dayanarak, olay dinleyicisinin farklı şekilde çalıştığı görülmektedir.
Bir olay dinleyicisi nasıl çalışır?
Eğer şüpheli olduğunuz gibi, bir olay olabilir yoklama yoluyla çalışır. Bir olay bir şekilde dış olaylar ile ilgiliyse, örneğin basıldığında bir klavye tuşu varsa, bir noktada oylama yapılması gerekir.
Bu aynı zamanda olayların yoklama ile ilgili olması gerekmediği için de geçerlidir. Örneğin, bir düğmeye basıldığında olay varsa, o zaman bu düğmenin olay dinleyicisi, bir fare tıklatmasının düğmeye bastığını belirlediğinde GUI çerçevesinin arayabileceği bir yöntemdir. Bu durumda, oylamanın, fare tıklatmasının algılanması için hala gerçekleşmesi gerekiyordu, ancak fare dinleyicisi, olay zincirleme yoluyla ilkel yoklama mekanizmasına bağlı daha pasif bir öğedir.
Güncelleme: Düşük seviye donanım oylamalarında
USB cihazlarının ve diğer modern iletişim protokollerinin, klavyeler ve fareler gibi G / Ç cihazlarının geçici topolojilerde yer almasını sağlayan etkileşimler için oldukça etkileyici bir ağ benzeri protokol kümesi olduğu ortaya çıktı .
İlginçtir ki, " kesintiler " oldukça zorunlu, senkronize şeylerdir, bu yüzden özel ağ topolojileriyle başa çıkmazlar. Bunu düzeltmek için, " kesmeler ", " kesilme işlemleri " (USB bağlamında) veya " mesaj işaretli kesmeler " (PCI bağlamında) olarak adlandırılan eşzamansız yüksek öncelikli paketlere genelleştirilmiştir . Bu protokol bir USB spesifikasyonunda açıklanmıştır:
- " Şekil 8-31. Toplu İşlem / Kontrol / Kesinti İşlemi Ana Durum Makinesi ", "Evrensel Seri Veri Yolu Belirtimi, Revizyon 2.0" , basılı-sayfa-222; PDF-sayfa-250 (2000-04-27)
Temel amaç, G / Ç aygıtlarının ve iletişim bileşenlerinin (USB hub gibi) temelde ağ aygıtları gibi göründüğü görülüyor. Böylece limanlarını yoklamalarını gerektiren mesajlar gönderiyorlar. Bu, özel donanım hatlarına olan ihtiyacı azaltır.
Windows gibi işletim sistemleri yoklama işlemini kendisinin işlemesi gibi görünüyor, örneğin anlatıldığı gibi MSDN belgelerine USB_ENDPOINT_DESCRIPTOR
's nasıl kontrol edileceği açıklanır ne sıklıkta, Windows anketler kesme / isochronous mesajları için bir USB ana denetleyicisi:
bInterval
Değeri kesme ve izokronik uç noktaları için yoklama aralığını içerir. Diğer uç nokta türleri için bu değer göz ardı edilmelidir. Bu değer, cihazın bellenim yapılandırmasını yansıtır. Sürücüler bunu değiştiremez.
Yoklama aralığı, cihazın hızı ve ana bilgisayar denetleyicisinin türü ile birlikte, sürücünün bir kesme veya eşzamanlı aktarma başlatması gereken sıklığı belirler. İçindeki değer bInterval
sabit bir süreyi temsil etmiyor. Göreceli bir değerdir ve gerçek yoklama frekansı, cihazın ve USB ana denetleyicisinin düşük, tam veya yüksek hızda çalışıp çalışmadığına da bağlı olacaktır.
- "USB_ENDPOINT_DESCRIPTOR yapısı" , Donanım Geliştirme Merkezi, Microsoft
DisplayPort gibi daha yeni monitör bağlantı protokolleri de aynı şekilde görünüyor:
Çok Akışlı Aktarım (MST)
DisplayPort Ver.1.2'ye MST (Çoklu Aktarım Aktarımı) eklendi
- Ver.1.1a’da yalnızca SST (Tek Akışlı Aktarım) mevcuttu
MST, tek bir bağlayıcı üzerinde birden fazla A / V akışını taşır
-Slide # 14 "DisplayPortTM Ver.1.2 Genel Bakış" (2010-12-06)
Bu soyutlama, tek bir bağlantıdan 3 monitör çalıştırmak gibi bazı zarif özelliklere izin verir:
DisplayPort Çok Akışlı Aktarım ayrıca üç veya daha fazla cihazı birbirine bağlamaya izin verir ancak bunun tersine, daha az "tüketici" odaklı bir yapılandırmada: aynı anda tek bir çıkış portundan birden fazla ekranı sürmek.
- "DisplayPort" , Wikipedia
Kavramsal olarak, bundan uzak durmanın amacı, yoklama mekanizmalarının daha genel işlevler istediğinizde harika olan daha genel seri haberleşmelere izin vermesidir. Bu nedenle, donanım ve işletim sistemi mantıksal sistem için çok oylama yapar. Daha sonra, etkinliklere abone olan tüketiciler, kendi yoklama / mesaj iletme protokollerini yazmak zorunda kalmadan, kendileri için düşük seviyeli sistem tarafından işlenen bu ayrıntıların tadını çıkarabilirler.
Sonuçta, tuş basımları gibi olaylar, yazılım düzeyindeki zorunlu olay başlatma mekanizmasına geçmeden önce oldukça ilginç bir olay dizisinden geçiyor gibi görünmektedir.