คำอธิบายง่ายๆสำหรับ“ รูปแบบเครื่องปฏิกรณ์” พร้อมการใช้งาน [ปิด]


89

รูปแบบเครื่องปฏิกรณ์มีคำอธิบายในวิกิพีเดียและมันดูเป็นนามธรรมเกินไป คุณสามารถอธิบายรูปแบบนี้ให้เป็นรูปธรรมมากขึ้นได้หรือไม่? เหมาะอย่างยิ่งกับข้อมูลโค้ดหรือไดอะแกรมระดับสูงที่อธิบายถึงการใช้งานบางรูปแบบของเครื่องปฏิกรณ์


3
พบว่าคำถามนี้เป็นคำตอบที่ดี - stackoverflow.com/questions/9138294/…
Ryan Gibbons

คำตอบ:


38

คุณอาจต้องการตรวจสอบเอกสารต้นฉบับที่อธิบายถึงhttp://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf

รูปแบบการออกแบบเครื่องปฏิกรณ์จะจัดการคำขอบริการที่ส่งพร้อมกันไปยังแอปพลิเคชันโดยไคลเอ็นต์ตั้งแต่หนึ่งรายขึ้นไป แต่ละบริการในแอปพลิเคชันอาจประกอบด้วยวิธีการให้บริการและแสดงโดยตัวจัดการเหตุการณ์แยกต่างหากที่รับผิดชอบในการจัดส่งคำขอเฉพาะบริการ การจัดส่งตัวจัดการเหตุการณ์จะดำเนินการโดยผู้มอบหมายงานเริ่มต้นซึ่งจัดการตัวจัดการเหตุการณ์ที่ลงทะเบียนไว้ Demultiplexing ของคำร้องขอบริการดำเนินการโดยตัวแยกสัญญาณเหตุการณ์ซิงโครนัส


ดังที่คุณจะสังเกตเห็นเมื่ออ่านบทความ Douglas Schmidt et.al ได้ใช้เฟรมเวิร์ก C ++ ที่มีประสิทธิภาพสูงและเป็นโมดูลที่เรียกว่าสภาพแวดล้อมการสื่อสารแบบปรับเปลี่ยนได้ซึ่งรูปแบบเครื่องปฏิกรณ์มีบทบาทสำคัญ กรอบนี้ใช้ประโยชน์จากรูปแบบการออกแบบมากมายและคุ้มค่าที่จะตรวจสอบเพื่อประโยชน์นั้นเพียงอย่างเดียว หากคุณมองหาเฟรมเวิร์กแบบพกพาสำหรับสร้างแบ็กเอนด์ C ++ ที่ปรับขนาดได้สูง ACE ก็คุ้มค่าที่จะลองดู
user2015735

1
@reese Link เสียวันนี้ man :(
Allan Chua

1
@AllanChua ฉันคิดว่าฉันเจอแล้ว - dre.vanderbilt.edu/~schmidt/PDF/Reactor.pdf
manish ma

3
OP ขอคำอธิบายที่ "เรียบง่ายเป็นรูปธรรม" และคุณเสนอสิ่งที่เป็นนามธรรมยิ่งกว่า Wikipedia ...
Zhe

21

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


1
โหวตลงเพราะนี่ไม่ถูกต้อง
SebNag

3
แนวคิดหลักคือการดำเนินการ demultiplexing เหตุการณ์แบบซิงโครนัส ตัวจัดการเหตุการณ์จะถูกเรียกก็ต่อเมื่อสามารถดำเนินการในลักษณะที่ไม่ปิดกั้นเช่นแพ็กเก็ตข้อมูลทั้งหมดมีอยู่ที่ซ็อกเก็ตเครือข่ายรอให้ตัวจัดการเหตุการณ์ประมวลผลข้อมูล สิ่งนี้ทำให้สามารถดำเนินการตัวจัดการเหตุการณ์ตามลำดับในลักษณะที่ไม่ปิดกั้น
SebNag

2
"รูปแบบเครื่องปฏิกรณ์มีหน้าที่ในการแยกสัญญาณและการส่งตัวจัดการเหตุการณ์หลายตัวที่ถูกทริกเกอร์เมื่อสามารถเริ่มต้นการดำเนินการพร้อมกันโดยไม่มีการปิดกั้น" จากกระดาษที่เชื่อมโยงใน anwser ที่ยอมรับ
SebNag

นี่ไม่เป็นความจริงเลย มีเธรดจำนวนมากในเครื่องปฏิกรณ์ที่ไม่ใช่เครื่องปฏิกรณ์เท่าที่มีอยู่ในรูปแบบเครื่องปฏิกรณ์ แทนที่จะเป็นลูปเหตุการณ์คุณสามารถมีเธรด "การขับเคลื่อน" เดียวที่ไม่ใช้รูปแบบผู้สังเกตการณ์ / เหตุการณ์ - ผู้ฟัง ประสิทธิภาพเดียวกัน
Zombies
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.