A könnyebb téma:
> Nem muszáj a SIGCHLD-ra várni, erre írtam fentebb, hogy akár periodikusan is lehet nézgeteni ezt a táblát, teljesen ignorálva a SIGCHLD signalokat. Akkor nincs signal-összeolvadás, nincsenek egymásba érő PID check ciklusok.
Egymásba érő PID check ciklusok tényleg nem lesznek. „Eseményösszeolvadás” - mondjuk így - mindenképp lehet, csak ha végignézzük a táblát, akkor már nem zavar. Igen, lehet periodikusan nézni, sőt, újabb ötlet:
- nincs aszinkron handler függvény (ahogy beszéltük)
- t időnként megnézzük, hogy a sigpending() mutat-e egyáltalán olyat, hogy SIGCHLD érkezett. Nem tudjuk, mennyi, de ez nem baj.
- ha épp nem, akkor végig se kell nézni. Ha igen, akkor kell.
Jut eszembe, a kill 0 helyett meg lehet nézni a processztáblát, hogy fölöslegesen ne zavarjuk a child-ok esetleges close()-ait, meg miegymást.
A nehezebb téma:
> ha egy frissen létrehozott child process visszakapott PID-je már szerepel a táblában, akkor egyértelmű, hogy az csak úgy lehet, ha a korábbi tulajdonos kiszállt és újra kiosztották a PID-jét.
No de honnan tudjuk, hogy a korábbi kiszállt-e egyáltalán?
> ha tényleg annyi processünk lesz, akkor IMHO előbb fogynak el a fizikai erőforrások a rendszer alól, mintsem, hogy érzékelhetővé váljon a PID lista kezelésének lassúsága.
Hogy érzékelhetővé válik a kezelés lassúsága, az nem baj, viszont egyre megbízhatatlanabb lesz. De az igaz, hogy addigra nagyobb bajaink is lesznek. :) Részemről kb. eljutottunk oda, hogy ami fontos, azt megoldottuk közösen - kösz; - a többi már nem túl gyakorlati, viszont elég nehéz kérdés, azt elengedem. :)