โดยทั่วไปแล้วตัวจัดการเหตุการณ์ทำงานอย่างไร


14

นี่คือหัวข้อทั่วไป, ตัวจัดการเหตุการณ์ทำงานอย่างไร

นี่หมายถึงเบื้องหลัง - จะเกิดอะไรขึ้นเมื่อสร้างขึ้น

ฉันมีความคิดคร่าวๆ - แต่ต้องการที่จะได้รับการยืนยัน



ยอดเยี่ยมรูปแบบการสังเกตการณ์คือสิ่งที่ฉันได้พบ: ฉันได้อ่านเว็บเกี่ยวกับปัญหานี้และอ่านบทความที่ดีเกี่ยวกับการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ ภายในบทความนี้จะกล่าวถึงกระบวนการของรูปแบบการออกแบบตัวจัดการ โดยที่คุณมี Steam of Events ที่มาถึง Dispatcher แล้วนำเหตุการณ์นั้นมาวิเคราะห์เพื่อกำหนดประเภทของเหตุการณ์แล้วส่งแต่ละกิจกรรมไปยังตัวจัดการที่สามารถจัดการเหตุการณ์ประเภทนั้นได้
JHarley1

1
มันอธิบายว่าดิสแพตเชอร์เป็นวงวนไม่สิ้นสุดที่หยุดเฉพาะเมื่อ (ตัวอย่างเช่นกับแอปพลิเคชัน GUI) โปรแกรมถูกปิด และวิธีที่คุณมีรูปแบบการสังเกตการณ์ (หรือรูปแบบการเผยแพร่ / สมัครสมาชิก) ซึ่งใช้กันอย่างแพร่หลายในการเขียนโปรแกรมที่ขับเคลื่อนด้วยเหตุการณ์ด้วยเฟรมเวิร์ก GUI และวิธีการทำงานบนหลักการของฮอลลีวูดว่า "อย่าโทรหาเรา .
JHarley1

คุณจะบอกว่าคำอธิบายข้างต้นเพียงพอหรือไม่
JHarley1

มันขึ้นอยู่กับ. สำหรับภาพรวมระดับสูงก็ถือว่าใช้ได้ อย่างไรก็ตามสำหรับคำอธิบายที่ครอบคลุมและทั่วถึงแล้ว หลักสูตรคำอธิบายดังกล่าวน่าจะมีหลายหน้าของงานเช่นนี้อาจค่อนข้างแฟนซีเช่นเดียวกับที่คุณได้รับในสิ่งที่เว็บ vs กิจกรรมเดสก์ทอปเช่น
JB King

คำตอบ:


15

ในระดับต่ำตัวจัดการเหตุการณ์มักทำงานโดยการสำรวจอุปกรณ์และรอให้ฮาร์ดแวร์ขัดจังหวะ โดยพื้นฐานแล้วจะมีเธรดพื้นหลังบล็อกขณะรอให้ฮาร์ดแวร์ขัดจังหวะ เมื่อการขัดจังหวะเกิดขึ้นฟังก์ชั่นการสำรวจจะหยุดการบล็อค แอปพลิเคชันสามารถค้นหาว่าตัวจัดการอุปกรณ์ใดที่ทำให้เกิดการขัดจังหวะและชนิดของการขัดจังหวะและจากนั้นทำตาม (เช่นโดยการเรียกใช้ฟังก์ชันตัวจัดการเหตุการณ์) โดยทั่วไปจะทำในเธรดแยกต่างหากเพื่อให้มันเกิดขึ้นแบบอะซิงโครนัส

แน่นอนว่าวิธีการใช้งานจริงนั้นแตกต่างกันไปขึ้นอยู่กับระบบปฏิบัติการและประเภทของอุปกรณ์ / อินพุต บนระบบ UNIX วิธีหนึ่งที่ตัวจัดการเหตุการณ์ถูกนำไปใช้สำหรับสิ่งต่าง ๆ เช่นซ็อกเก็ตพอร์ตอนุกรมหรือพอร์ต USB คือการเลือกระบบโทรหรือโพล หนึ่งหรือมากกว่าหนึ่งอธิบายไฟล์ / อุปกรณ์ (ซึ่งจะเชื่อมโยงกับอุปกรณ์เช่นซ็อกเก็ตเครือข่ายพอร์ตอนุกรม / USB ฯลฯ ) จะถูกส่งผ่านไปยังpollสายระบบ - ซึ่งให้บริการแก่โปรแกรมเมอร์ผ่านระดับต่ำ C API เมื่อมีเหตุการณ์เกิดขึ้นในหนึ่งในอุปกรณ์เหล่านี้ (เช่นพูดว่ามีข้อมูลบางอย่างมาถึงพอร์ตอนุกรม) การเรียกระบบสำรวจความคิดเห็นจะหยุดการบล็อกและแอปพลิเคชันสามารถกำหนดว่าตัวบ่งชี้อุปกรณ์ใดทำให้เกิดเหตุการณ์และประเภทของเหตุการณ์ .

ใน Windows สิ่งนี้จัดการแตกต่างกัน แต่โดยทั่วไปแล้วแนวคิดจะเหมือนกัน

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.