2011-09-29 15 views
5

¿Encontraré un error si creo un pthread_create dentro de pthread, que es creado por la función principal? Si, ¿puedo entonces qué todas las cosas de las que debería ocuparme?¿Puedo crear un pthread dentro de un pthread, que ya está creado por el principal?

Importante ....: Estoy haciendo una programación de socket, donde he abierto 5 hilos cada uno en puertos separados que están escuchando en puertos, cada vez que recibo un mensaje, quiero crear un hilo que tome el mensaje y escribe en un archivo usando pwrite. Entonces, tengo algunas preguntas, por favor, ¿pueden ayudarme?

Si no, ¿cuál es otra solución de crear un hilo dentro de un hilo .. ??

¿O me dará una falla de segmentación?

o voy a correr en algunas condiciones de carrera ....

+1

Sí, puedes hacer esto. –

Respuesta

4

pthread_create crea un nuevo hilo. Independientemente de donde se llama . Y crear un nuevo hilo para una conexión cuando se escucha en un puerto es prácticamente el procedimiento estándar.

+0

Pero, mi pregunta es que he tomado los datos de la cadena de caracteres recv y los envié como argumento para el hilo creado después de recv ... Ahora, como hay 5 hilos escuchando simultáneamente, ¿no creará una condición de carrera en la recepción? paquetes ..... – Invictus

+0

@Invictus Independientemente de dónde cree los hilos, debe seguir las reglas habituales de seguridad de hilos. Mucho depende de cómo esté "escuchando" usando 'accept', cada' 'int' devuelto es un socket separado, que puede pasarse al subproceso secundario sin problemas. Si está manejando una conexión UDP, y escuchando usando 'recvfrom', debe asignar un nuevo búfer para cada llamada, y pasar el búfer recibido al subproceso secundario, que puede liberarlo cuando esté terminado. En ambos casos, cada hilo debe estar escuchando un socket diferente (puerto). –

Cuestiones relacionadas