Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D La Corte in Rete
 
Il Corso Le lezioni del Corso La Cattedra
 
Materiali di approfondimento Risorse Web Il Podcast di questa lezione

Marco Lapegna » 20.Esercitazione 2: I thread


Threads POSIX (Pthreads)

  • Uno standard POSIX (IEEE 1003.1c) per la creazione e sincronizzazione dei threads
  • Definizione delle API
  • Threads conformi allo standard POSIX sono chiamati Pthreads
  • Lo standard POSIX stabilisce che registri dei processori, stack e signal mask sono individuali per ogni thread

Threads POSIX (Pthreads)

  • Lo standard specifica come il sistema operativo dovrebbe gestire i segnali ai Pthtrads i specifica differenti metodi di cancellazione (asincrona, ritardata, …)
  • Permette di definire politiche discheduling e priorità
  • Alla base di numerose librerie di supporto per vari sistemi

Creazione di un thread

  • tid: identificativo del thread ritornato dalla funzione
  • attr: attributi del thread (priorita’, dimensione stack, …) . A meno di esigenze particolari si usa NULL
  • func: funzione di tipo void * che costituisce il corpo del thread
  • arg : unico argomento di tipo void * passato a func

La funzione ritorna subito dopo creato il thread !!!


Attesa per la fine di un thread

  • tid: identificativo del thread di cui attendere la fine
  • status: puntatore al valore di ritorno del thread. Di solito NULL

Processi vs Pthread

Altre funzioni:

  • int pthread_detach(pthread_t thread_id)
  • int pthread_exit(void *value_ptr)
  • pthread_t pthread_self()

Esempio

Realizzare un programma con 2 threads tale che:

  • thread scrivi incrementa una variabile condivisa shareddata da 1 a 5, aspettando 1 secondo tra un incremento e l’altro
  • thread leggi legge e stampa il contenuto di shareddata solo quando il thread scrivi ha modificato la variabile condivisa
  • Far terminare il thread leggi quando termina il thread scrivi

Multithreading: main

Continua nella prossima slide.


Multithreading: main


Thread scrivi


Thread leggi

N.B. compilare il tutto linkando la libreria libpthread.a


Esempio (esecuzione)


Prossima lezione

Esercitazione 3: Scheduling dei processi

  • Contenuti protetti da Creative Commons
  • Feed RSS
  • Condividi su FriendFeed
  • Condividi su Facebook
  • Segnala su Twitter
  • Condividi su LinkedIn
Progetto "Campus Virtuale" dell'Università degli Studi di Napoli Federico II, realizzato con il cofinanziamento dell'Unione europea. Asse V - Società dell'informazione - Obiettivo Operativo 5.1 e-Government ed e-Inclusion

Fatal error: Call to undefined function federicaDebug() in /usr/local/apache/htdocs/html/footer.php on line 93