2011-09-29 10 views
5

Si verificherà un errore se creo un pthread_create all'interno di un pthread, creato dalla funzione principale. Se, posso quindi che cosa dovrei prendere tutte le cose ???Posso creare un pthread all'interno di un pthread, che è già stato creato dal main?

Importante ....: sto facendo una programmazione socket, dove ho aperto 5 thread ciascuno su porte separate che stanno ascoltando sulle porte, quando mai ricevo un messaggio, voglio creare un thread che prende il messaggio e scrive in un file usando pwrite. Quindi, ho qualche domanda, per favore puoi aiutarmi ???

In caso contrario, qual è un'altra soluzione di creazione di un thread all'interno di un thread .. ??

Oppure mi darà un errore di segmentazione ???

o avrò incontrato alcune condizioni di gara ....

+1

Sì, puoi farlo. –

risposta

4

pthread_create crea un nuovo thread. Indipendentemente da dove è chiamato . E la creazione di un nuovo thread per una connessione quando si ascolta su una porta è praticamente una procedura standard.

+0

Ma, la mia domanda è che ho preso i dati dal thread RECV e l'ho inviato come argomento al thread creato dopo RECV .... Ora che ci sono 5 thread che ascoltano contemporaneamente, non creerà una condizione di competizione nel pacchetti ..... – Invictus

+0

@Invictus Indipendentemente da dove si creano i thread, è necessario seguire le normali regole per la sicurezza dei thread. Molto dipende da come stai "ascoltando" usando 'accept', ognuno restituito' int' è un socket separato, che può essere passato al thread figlio senza problemi. Se stai gestendo una connessione UDP e stai ascoltando usando 'recvfrom', dovresti assegnare un nuovo buffer per ogni chiamata e passare il buffer ricevuto al thread secondario, che può liberarlo quando è finito. In entrambi i casi, ogni thread dovrebbe ascoltare un socket diverso (porta). –

Problemi correlati