เมื่อเขาหน้าเว็บเกี่ยวกับเคล็ดลับท่อตนเองแดน Bernstein อธิบายสภาพการแข่งขันด้วยselect()
และสัญญาณข้อเสนอการแก้ปัญหาและสรุปว่า
แน่นอนว่าสิ่งที่ถูกต้องคือการ
fork()
ส่งคืนไฟล์อธิบายไม่ใช่รหัสกระบวนการ
เขาหมายความว่าอย่างไร - เป็นเรื่องเกี่ยวกับความสามารถselect()
ในกระบวนการลูกเพื่อจัดการการเปลี่ยนแปลงสถานะของพวกเขาแทนที่จะต้องใช้เครื่องจัดการสัญญาณเพื่อรับการแจ้งเตือนการเปลี่ยนแปลงสถานะเหล่านั้นหรือไม่
signalfd
และสิ่งนั้นกลับมาแล้วเหรอ?
wait()
มีบางสิ่งที่คุณทำไม่ได้ดังนั้นมีคนคิดค้น SIGCHLD แต่มันก็เป็นงานที่แย่ จากประสบการณ์ของผมและตอนนี้ที่พวกเขามีอยู่โรยดี nonblocking wait3()
, wait4()
และ / หรือwaitpid()
การโทรที่สถานที่สำคัญ (อาจจะห่วงเหตุการณ์หลักของคุณ) เป็นทางเลือกที่เหนือกว่าอย่างมากมาย