คำศัพท์
เหตุการณ์ : ประเภทของสิ่งที่สามารถเกิดขึ้นได้
การยิงของเหตุการณ์ : เหตุการณ์เฉพาะ; เหตุการณ์ที่เกิดขึ้น
ฟังเหตุการณ์ : บางสิ่งบางอย่างที่มองออกไปจากเหตุการณ์ไล่ออก
ตัวจัดการเหตุการณ์ : สิ่งที่เกิดขึ้นเมื่อผู้ฟังเหตุการณ์ตรวจพบการยิงของเหตุการณ์
สมาชิกของเหตุการณ์ : การตอบสนองที่ตัวจัดการเหตุการณ์ที่ควรจะเรียก
คำจำกัดความเหล่านี้ไม่ได้ขึ้นอยู่กับการนำไปใช้งานดังนั้นจึงสามารถนำไปใช้งานได้หลายวิธี
บางคำศัพท์เหล่านี้มักเข้าใจผิดว่าเป็นคำพ้องความหมายเนื่องจากผู้ใช้ไม่จำเป็นต้องแยกแยะระหว่างคำเหล่านั้น
สถานการณ์ทั่วไป
เหตุการณ์การเขียนโปรแกรมลอจิก
เหตุการณ์คือเมื่อวิธีการบางอย่างได้รับการเรียก
การยิงเหตุการณ์เป็นการเรียกวิธีการนั้นโดยเฉพาะ
ฟังเหตุการณ์เป็นเบ็ดในวิธีกรณีที่เรียกว่าในแต่ละเหตุการณ์ยิงที่เรียกตัวจัดการเหตุการณ์
จัดการเหตุการณ์เรียกคอลเลกชันของสมาชิกเหตุการณ์
สมาชิกเหตุการณ์ (s)ดำเนินการสิ่งที่กระทำ (s) ระบบหมายความว่าจะเกิดขึ้นในการตอบสนองต่อการเกิดเหตุการณ์
เหตุการณ์ภายนอก
เหตุการณ์เป็นสิ่งที่เกิดขึ้นภายนอกที่สามารถอนุมานจาก observables
ยิงเหตุการณ์คือเมื่อที่เกิดขึ้นภายนอกได้รับการยอมรับว่ามีการเกิดขึ้น
ฟังเหตุการณ์อย่างใดตรวจพบไล่ออกเหตุการณ์โดยมักจะเลือกตั้งสังเกต (s), แล้วมันเรียกตัวจัดการเหตุการณ์เมื่อตรวจหาการยิงเหตุการณ์
จัดการเหตุการณ์เรียกคอลเลกชันของสมาชิกเหตุการณ์
สมาชิกเหตุการณ์ (s)ดำเนินการสิ่งที่กระทำ (s) ระบบหมายความว่าจะเกิดขึ้นในการตอบสนองต่อการเกิดเหตุการณ์
การสำรวจกับการสอดตะขอเข้าไปในกลไกการยิงของเหตุการณ์
จุดที่คนอื่นทำคือการเลือกตั้งบ่อยครั้งไม่จำเป็น นี่เป็นเพราะผู้ฟังเหตุการณ์สามารถนำไปใช้งานได้โดยให้เหตุการณ์ไล่ออกโดยอัตโนมัติเรียกตัวจัดการเหตุการณ์ซึ่งเป็นวิธีที่มีประสิทธิภาพที่สุดในการนำสิ่งต่าง ๆ มาใช้เมื่อเหตุการณ์เกิดขึ้นในระดับระบบ
โดยการเปรียบเทียบคุณไม่จำเป็นต้องตรวจสอบกล่องจดหมายของคุณสำหรับอีเมลทุกวันหากพนักงานไปรษณีย์เคาะประตูและส่งอีเมลถึงคุณโดยตรง
อย่างไรก็ตามฟังเหตุการณ์สามารถทำงานได้โดยการสำรวจ การสำรวจความคิดเห็นไม่จำเป็นต้องตรวจสอบค่าเฉพาะหรือสิ่งอื่นที่สังเกตได้ มันซับซ้อนกว่านี้ได้ แต่โดยรวมแล้วจุดประสงค์ของการสำรวจคือการอนุมานเมื่อมีเหตุการณ์บางอย่างเกิดขึ้นซึ่งสามารถตอบสนองได้
โดยการเปรียบเทียบคุณต้องตรวจสอบกล่องจดหมายของคุณทุกวันเมื่อพนักงานไปรษณีย์เพิ่งส่งจดหมายลงไป คุณไม่จำเป็นต้องทำงานหน่วยเลือกตั้งนี้หากคุณสามารถสั่งให้พนักงานไปรษณีย์ทำการเคาะประตูของคุณ แต่นั่นก็ไม่ได้เป็นไปได้
ตรรกะของเหตุการณ์การโยง
ในภาษาการเขียนโปรแกรมหลายภาษาคุณสามารถเขียนเหตุการณ์ที่เพิ่งเรียกเมื่อมีการกดแป้นบนแป้นพิมพ์หรือในเวลาที่กำหนด แม้ว่าสิ่งเหล่านี้จะเป็นเหตุการณ์ภายนอกคุณไม่จำเป็นต้องสำรวจความคิดเห็น ทำไม?
มันเป็นเพราะระบบปฏิบัติการกำลังทำการสำรวจเพื่อคุณ ตัวอย่างเช่น Windows จะตรวจสอบสิ่งต่าง ๆ เช่นการเปลี่ยนแปลงสถานะของแป้นพิมพ์และหากตรวจพบสิ่งใดสิ่งหนึ่งมันจะเรียกสมาชิกของเหตุการณ์ ดังนั้นเมื่อคุณสมัครรับข้อมูลกิจกรรมการกดแป้นพิมพ์คุณจะสมัครรับข้อมูลกิจกรรมที่เป็นสมาชิกของกิจกรรมที่โพล
โดยการเปรียบเทียบให้บอกว่าคุณอาศัยอยู่ในอพาร์ทเมนต์คอมเพล็กซ์และพนักงานไปรษณีย์ส่งจดหมายไปยังพื้นที่รับจดหมายของชุมชน จากนั้นผู้ปฏิบัติงานที่ใช้ระบบปฏิบัติการสามารถตรวจสอบจดหมายนั้นสำหรับทุกคนโดยส่งจดหมายไปยังอพาร์ตเมนต์ของผู้ที่ได้รับบางสิ่งบางอย่าง วิธีนี้ช่วยให้ทุกคนมีปัญหาในการสำรวจพื้นที่รับจดหมาย
สัญชาตญาณของฉันจะถือว่าผู้ฟังเหตุการณ์ตรวจสอบอย่างต่อเนื่องว่าเหตุการณ์ถูกยิงหรือไม่ความหมายในสถานการณ์ของฉันมันจะไม่แตกต่างจากการตรวจสอบทุกเฟรมหากเหตุการณ์นั้นถูกไล่ออก
จากการอภิปรายในชั้นเรียนดูเหมือนว่าผู้ฟังเหตุการณ์จะทำงานในลักษณะที่แตกต่างออกไป
ฟังเหตุการณ์ทำงานอย่างไร
ในขณะที่คุณสงสัยว่าเหตุการณ์สามารถทำงานผ่านการสำรวจ และหากเหตุการณ์ใดที่เกี่ยวข้องกับเหตุการณ์ภายนอกเช่นการกดแป้นคีย์บอร์ดการเลือกตั้งจะต้องเกิดขึ้นในบางจุด
เป็นความจริงที่ว่าเหตุการณ์ไม่จำเป็นต้องเกี่ยวข้องกับการลงคะแนนเลือกตั้ง ตัวอย่างเช่นหากเหตุการณ์เกิดขึ้นเมื่อกดปุ่มผู้ฟังเหตุการณ์ของปุ่มนั้นเป็นวิธีการที่กรอบงาน GUI อาจเรียกใช้เมื่อพิจารณาว่าการคลิกเมาส์กระทบปุ่ม ในกรณีนี้การสำรวจยังคงเกิดขึ้นสำหรับการตรวจจับการคลิกเมาส์ แต่ตัวฟังเมาส์เป็นองค์ประกอบแบบพาสซีฟมากกว่าที่เชื่อมต่อกับกลไกการลงคะแนนแบบดั้งเดิมผ่านการโยงเหตุการณ์
อัปเดต: สำหรับการสำรวจฮาร์ดแวร์ระดับต่ำ
ปรากฎว่าอุปกรณ์ USB และโปรโตคอลการสื่อสารที่ทันสมัยอื่น ๆ มีชุดของโปรโตคอลสำหรับการโต้ตอบที่น่าดึงดูดใจทำให้อุปกรณ์ I / O รวมถึงแป้นพิมพ์และเมาส์มีส่วนร่วมในทอพอโลยีแบบเฉพาะกิจ
สิ่งที่น่าสนใจคือ "การขัดจังหวะ " เป็นสิ่งที่ค่อนข้างจำเป็นและเป็นแบบซิงโครนัสดังนั้นพวกเขาจึงไม่จัดการทอพอโลยีเครือข่ายแบบเฉพาะกิจ เพื่อแก้ไขปัญหานี้ " ขัดจังหวะ " ได้รับการทั่วไปเข้าไม่ตรงกันแพ็คเก็ตมีความสำคัญสูงที่เรียกว่า" การทำธุรกรรมการขัดจังหวะ " (ในบริบทของ USB) หรือ" การขัดจังหวะข้อความส่งสัญญาณ " (ในบริบทของของ PCI) โปรโตคอลนี้ได้อธิบายไว้ในข้อมูลจำเพาะของ USB:
- " รูปที่ 8-31. เครื่องสถานะโฮสต์ธุรกรรม / การควบคุม / ขัดจังหวะ OUT " ใน"ข้อมูลจำเพาะ Universal Serial Bus, Revision 2.0" , printed-page-222; PDF-page-250 (2000-04-27)
สรุปสาระสำคัญดูเหมือนว่าอุปกรณ์ I / O และส่วนประกอบการสื่อสาร (เช่นฮับ USB) โดยทั่วไปจะทำหน้าที่เหมือนอุปกรณ์เครือข่าย ดังนั้นพวกเขาจึงส่งข้อความซึ่งจำเป็นต้องมีการสำรวจพอร์ตและเช่นนั้น สิ่งนี้ช่วยลดความจำเป็นในการใช้สายฮาร์ดแวร์เฉพาะ
ระบบปฏิบัติการเช่น Windows ดูเหมือนจะจัดการกับกระบวนการเลือกตั้งของตัวเองเช่นที่อธิบายไว้ในเอกสาร MSDN สำหรับUSB_ENDPOINT_DESCRIPTOR
'sซึ่งอธิบายถึงวิธีการควบคุมความถี่ของ Windows โพลล์ตัวควบคุมโฮสต์ USB สำหรับข้อความขัดจังหวะ / isochronous:
bInterval
ค่ามีช่วงการเลือกตั้งสำหรับการขัดจังหวะและ isochronous ปลายทาง สำหรับจุดปลายประเภทอื่นค่านี้ควรถูกละเว้น ค่านี้สะท้อนถึงการกำหนดค่าอุปกรณ์ในเฟิร์มแวร์ ไดรเวอร์ไม่สามารถเปลี่ยนได้
ช่วงเวลาการทำโพลพร้อมกับความเร็วของอุปกรณ์และประเภทของโฮสต์คอนโทรลเลอร์กำหนดความถี่ที่ไดรเวอร์ควรเริ่มต้นการอินเตอร์รัปต์หรือการถ่ายโอนแบบ isochronous ค่าในbInterval
ไม่ได้แสดงระยะเวลาที่แน่นอน เป็นค่าสัมพัทธ์และความถี่ในการทำโพลที่แท้จริงจะขึ้นอยู่กับว่าอุปกรณ์และตัวควบคุมโฮสต์ USB ทำงานที่ความเร็วต่ำเต็มหรือสูง
- "USB_ENDPOINT_DESCRIPTOR โครงสร้าง" , Hardware Dev Center, Microsoft
ใหม่กว่าโปรโตคอลการเชื่อมต่อจอภาพเช่นDisplayPortดูเหมือนจะทำเช่นเดียวกัน:
การขนส่งหลายสตรีม (MST)
-Slide # 14 จาก"ภาพรวม DisplayPortTM Ver.1.2" (2010-12-06)
สิ่งที่เป็นนามธรรมนี้อนุญาตให้ใช้คุณสมบัติที่เป็นระเบียบบางอย่างเช่นการรันจอภาพ 3 จอจากการเชื่อมต่อเดียว:
DisplayPort Multi-Stream Transport ยังอนุญาตให้เชื่อมต่ออุปกรณ์สามตัวหรือมากกว่าเข้าด้วยกัน แต่ในทางกลับกันการกำหนดค่าแบบ "ผู้บริโภค" ที่น้อยลง: ขับจอหลายจอพร้อมกันจากพอร์ตเอาต์พุตเดียว
- "DisplayPort" , Wikipedia
ตามหลักการแล้วประเด็นที่ต้องคำนึงถึงก็คือกลไกการสำรวจความคิดเห็นอนุญาตให้มีการสื่อสารแบบอนุกรมทั่วไปซึ่งยอดเยี่ยมมากเมื่อคุณต้องการฟังก์ชั่นทั่วไป ดังนั้นฮาร์ดแวร์และระบบปฏิบัติการจึงทำโพลจำนวนมากสำหรับระบบโลจิคัล จากนั้นผู้บริโภคที่สมัครรับกิจกรรมสามารถเพลิดเพลินไปกับรายละเอียดที่จัดการให้พวกเขาโดยระบบระดับล่างโดยไม่ต้องเขียนโปรโตคอล / การส่งข้อความผ่านของตนเอง
ในที่สุดเหตุการณ์เช่นกดปุ่มดูเหมือนจะผ่านชุดที่น่าสนใจของเหตุการณ์ก่อนที่จะไปถึงกลไกการยิงเหตุการณ์ระดับความจำเป็นของซอฟต์แวร์