Qual è la migliore pratica corrente per il multithreading in C?

4

Sono stato uno sviluppatore Java (e PHP) per gran parte della mia vita, ma avrò bisogno di usare C per il mio prossimo progetto. Ricordo alcune cose basilari che abbiamo fatto a scuola con fork, pthread, semafori, ecc. Ma non sono sicuro che sia ancora qui la "strada da fare", o se ci siano stati sviluppi / miglioramenti recenti ecc.

I risultati di Google sembrano essere piuttosto datati. O significa solo che questo è ancora lo stato attuale?

O dovrò usare una libreria (indipendente dal sistema) come glib se voglio astrazioni di livello superiore, come le code sincronizzate? Quali altre librerie ci sono? (Tuttavia, il programma deve essere eseguito solo su Linux)

    
posta Dexter 13.12.2011 - 16:12
fonte

1 risposta

5

Beh, in pratica è sempre lo stesso. Hai ancora pthreads (su Linux), il biforcazione è ancora usato in alcuni casi. Mutex e semafori ci sono anche. Certo, c'è CAS disponibile ma non è qualcosa di veramente nuovo.

Ciò che abbiamo ora sono alcune librerie per fare alcune cose con multithreading in modo leggermente diverso. È possibile utilizzare libevent2 o libev per creare sistemi di eventi (sebbene siano più utili in rete, per la lettura asincrona e la scrittura dai socket). E c'è ZeroMQ che puoi usare per evitare la comunicazione diretta dei thread, in realtà è piuttosto utile, basta usare il loro trasporto ipc.

Per quanto riguarda le strutture dati ci sono alcune librerie libere come glib o lib di ragazzi ZMQ.

Attenzione, C è ancora C e devi stare attento come sempre.

    
risposta data 13.12.2011 - 16:22
fonte

Leggi altre domande sui tag