horquilla en programa multihilo

He escuchado que mezclar el forking y el threading en un programa podría ser muy problemático, a menudo con un comportamiento misterioso, especialmente cuando se trata de recursos compartidos, como bloqueos, tuberías, descriptores de archivos. Pero nunca entiendo completamente cuáles son exactamente los peligros y cuándo podrían ocurrir. Sería fantástico si alguien con experiencia en esta área pudiera explicar un poco más detalladamente cuáles son las trampas y qué se debe tener cuidado al programar en un entorno de este tipo.

Por ejemplo, si quiero escribir un servidor que recopile datos de varios recursos diferentes, una solución que he pensado es hacer que el servidor genere un conjunto de subprocesos, cada uno de ellos debe llamar a otro programa para hacer el trabajo real, abrir tuberías para recuperar los datos del niño. Cada uno de estos hilos responde por su propio trabajo, no hay intercambio de datos en b / w, y cuando se recopilan los datos, el hilo principal tiene una cola y estos hilos de trabajo simplemente pondrán el resultado en la cola. ¿Qué podría salir mal con esta solución?

Por favor, no reduzca su respuesta simplemente "respondiendo" a mi escenario de ejemplo. ¡Cualquier sugerencia, soluciones alternativas o experiencias que no estén relacionadas con el ejemplo pero que sean útiles para proporcionar un diseño limpio serían excelentes! ¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta