10
มีวิธีสำหรับหลายกระบวนการในการแชร์ซ็อกเก็ตการฟังหรือไม่?
ในการเขียนโปรแกรมซ็อกเก็ตคุณสร้างซ็อกเก็ตการฟังจากนั้นสำหรับไคลเอนต์แต่ละตัวที่เชื่อมต่อคุณจะได้รับสตรีมซ็อกเก็ตปกติที่คุณสามารถใช้เพื่อจัดการกับคำขอของไคลเอ็นต์ ระบบปฏิบัติการจะจัดการคิวของการเชื่อมต่อขาเข้าเบื้องหลัง สองกระบวนการไม่สามารถเชื่อมโยงกับพอร์ตเดียวกันในเวลาเดียวกัน - โดยค่าเริ่มต้นอย่างไรก็ตาม ฉันสงสัยว่ามีวิธีใด (ในระบบปฏิบัติการที่รู้จักกันดีโดยเฉพาะ Windows) ในการเปิดใช้งานอินสแตนซ์หลาย ๆ ขั้นตอนเพื่อให้พวกเขาเชื่อมโยงกับซ็อกเก็ตทั้งหมดดังนั้นพวกเขาจึงแบ่งปันคิวได้อย่างมีประสิทธิภาพ จากนั้นแต่ละอินสแตนซ์ของกระบวนการสามารถเป็นเธรดเดียว มันจะบล็อกเมื่อยอมรับการเชื่อมต่อใหม่ เมื่อไคลเอ็นต์เชื่อมต่ออินสแตนซ์กระบวนการที่ไม่ได้ใช้งานตัวใดตัวหนึ่งจะยอมรับไคลเอ็นต์นั้น สิ่งนี้จะช่วยให้แต่ละกระบวนการมีการใช้งานแบบเธรดเดียวที่เรียบง่ายมากโดยไม่ต้องแชร์อะไรเลยเว้นแต่ผ่านหน่วยความจำที่แบ่งใช้อย่างชัดเจนและผู้ใช้จะสามารถปรับแบนด์วิดท์การประมวลผลได้โดยเริ่มอินสแตนซ์เพิ่มเติม คุณสมบัติดังกล่าวมีอยู่จริงหรือไม่? แก้ไข:สำหรับผู้ที่ถามว่า "ทำไมไม่ใช้เธรด" เห็นได้ชัดว่าเธรดเป็นตัวเลือก แต่ด้วยหลายเธรดในกระบวนการเดียวอ็อบเจ็กต์ทั้งหมดสามารถแชร์ได้และต้องใช้ความระมัดระวังเป็นอย่างยิ่งเพื่อให้แน่ใจว่าอ็อบเจ็กต์ไม่ได้ถูกแชร์หรือมองเห็นได้ทีละเธรดเท่านั้นหรือไม่เปลี่ยนรูปอย่างแน่นอนและเป็นภาษายอดนิยมและ เวลาทำงานขาดการสนับสนุนในตัวสำหรับการจัดการความซับซ้อนนี้ เมื่อเริ่มต้นกระบวนการของผู้ปฏิบัติงานที่เหมือนกันจำนวนหนึ่งคุณจะได้รับระบบที่ทำงานพร้อมกันซึ่งค่าเริ่มต้นคือไม่มีการแบ่งปันทำให้ง่ายต่อการสร้างการใช้งานที่ถูกต้องและปรับขนาดได้