Vai alla Home Page About me Courseware Federica Living Library Federica Federica Podstudio Virtual Campus 3D Le Miniguide all'orientamento Gli eBook di Federica La Corte in Rete
 
I corsi di Scienze Matematiche Fisiche e Naturali
 
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