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