Per gli esperti del settore :
devo implemntare un MS in C, utilizzando socket TCP e processi.

L'implementazione consiste in due programmi uno relativo al server e l'altro relativo ai client.
I client, dopo l'autenticazione, hanno la possibilità di inviare un messaggio a tutti o ad un client in particolare (Messaggio privato).
Prima di concentrami sulla scrittura del codice sto analizzando su carta le varie problematiche.
Descrivo, spero sia breve, il modello che ho pensato, sperando di ottenere consigli in merito:

il server ad ogni autenticazione crea due figli, uno scrittore (WS) e un lettore (RS).
Altrettanto nel client sono in esecuzione due processi, uno scrittore (WC) e un lettore (RC).
L'utenticazione avviene tramite socket TCP. Il client e il server comunicano tramite questi processi WC->RS e RC<-WS.
Per ogni utente quindi, sono attivi sul server due processi.

1° dubbio : è giusto che per ogni utente siano attivi alcuni processi, o è meglio crearli ogni volta che un utente fa quancle richiesta? Per esempio login->processo per il login->terminazione processo;send ms->processo per il send ms->terminazione processo;....;

Per ogni utente, nel server è presente una coda di messaggi, conteneti i messaggi che dovranno essergli recapitati (Privati e non).

Il processo WS relativo ad un utente è in "ascolto" sulla coda associata ad esso, quando ci sono messaggi, li invia al client.

Il processo RS relativo ad un utente, è in ascolto sul socket, quando arrivano messaggi dal client associato,li pone nelle code dei messaggi degli altri utenti.
Se si tratta di un messaggio privato, lo pone solo nella coda del ricevente, in caso contrario lo pone in tutte le code.
Ogni processo RS, conosce l'id delle code degli altri utenti, grazie ad una strttura resa condivisa.

2° dubbio : considerando che il numero di client sia comunque limitato, non credete che il server sia appesantito dalla presenza di tutte queste attività?
Per ogni utente 2 processi, un socket e una coda di messaggi.

Spero di non avervi annoiato...e sopratutto di ottenere consigli in merito!