Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Guida SDL - Applicazioni Multithreaded

Guida SDL

Capitolo 15° - Applicazioni Multithreaded

<< Precedente Prossimo >>
Applicazioni Multi-threaded



A volte capita di dover affrontare problemi che trovano soluzione solo con operazioni svolte in parallelo; purtroppo la gestione di 2 processi pesa parecchio al sistema, quindi sono stati creati i thread, definibili come "processi leggeri"; ogni processo può avere più thread, i quali condividono lo stesso spazio di indirizzamento.

La libreria SDL ci mette a disposizione funzioni per creare thread e per poterli gestire. Prima di vedere quali sono queste funzioni è necessario sapere a cosa è necessario prestare attenzione per evitare effetti indesiderati:

Prima di tutto pensa a tutte le possibili soluzioni alternative all'utilizzo di un nuovo thread;

Se non c'è altro modo, o se questo è il più efficace, è bene evitare l'utilizzo di variabili globali su thread differenti;

Non terminare i threads, utilizza invece un flag e fai in modo che si chiuda autonomamente; questo sia per evitare errori di esecuzione che il possibile memory-leak;

E' preferibile non fare chiamate SDL Video/Event su più threads.



SDL_Thread *SDL_CreateThread(int (*fn)(void *), void *data);

Questa funzione permette la creazione di un nuovo thread, avviando la funzione fn con parametri data.

    void SDL_WaitThread(SDL_Thread *thread, int *status);

Aspetta che un thread finisca; status è il valore restituito dalla funzione main del thread terminato.

    void SDL_KillThread(SDL_Thread *thread);

Termina un determinato thread.



SDL permette anche la risoluzione del problema delle variabili condivise tramite mutex, ovvero il procedimento di sincronizzazione che impedisce l'accesso contemporaneo di più threads alla stessa risorsa, evitando così errori parecchio fastidiosi. La conoscenza del loro utilizzo và oltre lo scopo di questa guida.

Un esempio di operazione da svolgere in multi-threading è la gestione della comunicazione di rete; in questo caso, a meno che non si intenda bloccare il software in attesa di un determinato pacchetto, o fino alla scadenza di un timeout, risulta fondamentale l'utilizzo di un secondo thread che gestisca in maniera autonoma la connessione.

<< Precedente Prossimo >>
A proposito dell'autore

Laurea in Ingegneria Informatica. Dottorato in Neuroingegneria. Conosco i linguaggi C/C++, Java, Delphi, jsp e servlet, PHP, SQL, Bash, R, Matlab, Lisp. Esperienza con le librerie SDL e OpenGL, Ogre3D e Ode, MFC e CLR, Winsock. Conoscenza base di: VB, Assembly.