3 %% Copyright (C) 2007 Simone Piccardi. Permission is granted to
4 %% copy, distribute and/or modify this document under the terms of the GNU Free
5 %% Documentation License, Version 1.1 or any later version published by the
6 %% Free Software Foundation; with the Invariant Sections being "Un preambolo",
7 %% with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the
8 %% license is included in the section entitled "GNU Free Documentation
15 Tratteremo in questo capitolo un modello di programmazione multitasking,
16 quello dei \textit{thread}, alternativo al modello classico dei processi,
17 tipico di Unix. Ne esamineremo le caratteristiche, vantaggi e svantaggi, e le
18 diverse realizzazioni che sono disponibili per Linux; nella seconda parte
19 tratteremo in dettaglio quella che è l'implementazione principale, che fa
20 riferimento all'interfaccia standardizzata da POSIX.1e.
23 \section{Introduzione ai \textit{thread}}
24 \label{sec:thread_intro}
26 Questa prima sezione costituisce una introduzione ai \textit{thread} e
27 tratterà i concetti principali del relativo modello di programmazione,
28 esamineremo anche quali modelli sono disponibili per Linux, dando una breve
29 panoramica sulle implementazioni alternative.
32 \subsection{Una panoramica}
33 \label{sec:thread_overview}
36 % http://vergil.chemistry.gatech.edu/resources/programming/threads.html
37 % http://math.arizona.edu/~swig/documentation/pthreads/
38 % http://www.humanfactor.com/pthreads/
40 Il modello classico dell'esecuzione dei programmi nei sistemi Unix, illustrato
41 in sez.~\ref{cha:process_interface}, è fondato sui processi. Il modello nasce
42 per assicurare la massima stabilità al sistema e prevede una rigida
43 separazione fra i diversi processi, in modo che questi non possano disturbarsi
46 Le applicazioni moderne però sono altamente concorrenti, e necessitano quindi
47 di un gran numero di processi; questo ha portato a scontrarsi con alcuni
48 limiti dell'architettura precedente. In genere i fautori del modello di
49 programmazione a \texttt{thread} sottolineano due problemi connessi all'uso
59 \subsection{I \textit{thread} e Linux}
60 \label{sec:linux_thread}
66 \subsection{Implementazioni alternative}
67 \label{sec:thread_other}
72 % http://www.gnu.org/software/pth/
75 \section{Posix \textit{thread}}
76 \label{sec:thread_intro}
79 Tratteremo in questa sezione l'interfaccia di programmazione con i
80 \textit{thread} standardizzata dallo standard POSIX 1.c, che è quella che è
81 stata seguita anche dalle varie implementazioni dei \textit{thread} realizzate
82 su Linux, ed in particolare dalla \textit{Native Thread Posix Library} che è
83 stata integrata con i kernel della serie 2.6 e che fa parte a pieno titolo
87 \subsection{Una panoramica}
88 \label{sec:pthread_overview}
91 \subsection{La gestione dei \textit{thread}}
92 \label{sec:pthread_management}
95 \subsection{I \textit{mutex}}
96 \label{sec:pthread_mutex}
99 \subsection{Le variabili di condizione}
100 \label{sec:pthread_cond}
104 % LocalWords: thread multitasking POSIX sez Posix Library kernel glibc mutex
109 %%% TeX-master: "gapil"