X-Git-Url: https://gapil.gnulinux.it/gitweb/?p=gapil.git;a=blobdiff_plain;f=thread.tex;h=62f4dfdf7e9bc388c02835965d9a36b120d6c0d5;hp=39c1f16ebd4b8ca1bc156efb458457a30d26ba33;hb=0e932d7963332ca87688c3695d7386d45ddcc46a;hpb=af4cf2bcebfaf023cc182b8370b978194e8027f7 diff --git a/thread.tex b/thread.tex index 39c1f16..62f4dfd 100644 --- a/thread.tex +++ b/thread.tex @@ -1,6 +1,6 @@ %% thread.tex %% -%% Copyright (C) 2007-2011 Simone Piccardi. Permission is granted to +%% Copyright (C) 2007-2019 Simone Piccardi. Permission is granted to %% copy, distribute and/or modify this document under the terms of the GNU Free %% Documentation License, Version 1.1 or any later version published by the %% Free Software Foundation; with the Invariant Sections being "Un preambolo", @@ -57,15 +57,39 @@ dei processi: \end{itemize} -\subsection{I \textit{thread} e Linux} -\label{sec:linux_thread} +\subsection{\textit{Thread} e processi} +\label{sec:thread_process} +Per un utilizzo effettivo dei \textit{thread} è sempre opportuno capire se +questi sono davvero adatti allo scopo che ci si pone. \subsection{Implementazioni alternative} \label{sec:thread_other} +Vedremo nella prossima sezione le caratteristiche del supporto per i +\textit{thread} fornita dal kernel, ma esistono diversi possibili approcci +alle modalità in cui questi possono essere realizzati. + +% TODO cenni su pth e le implementazioni in userspace + + +\section{I \textit{thread} e Linux} +\label{sec:linux_thread} + +In questa sezione tratteremo le implementazioni dei \textit{thread} +disponibili con Linux che ha visto un radicale cambiamento nel passaggio dalla +serie 2.4 alla serie 2.6, che ha portato alla versione attuale. + +\subsection{I \textit{LinuxThread}} +\label{sec:linux_old_thread} + + +\subsection{La \textit{Native Thread Posix Library}} +\label{sec:linux_ntpl} + + @@ -81,7 +105,7 @@ Tratteremo in questa sezione l'interfaccia di programmazione con i stata seguita anche dalle varie implementazioni dei \textit{thread} realizzate su Linux, ed in particolare dalla \textit{Native Thread Posix Library} che è stata integrata con i kernel della serie 2.6 e che fa parte a pieno titolo -delle \acr{glibc}. +della \acr{glibc}. \subsection{Una panoramica} @@ -92,6 +116,28 @@ delle \acr{glibc}. \label{sec:pthread_management} +Benché la funzione sia utilizzabile anche con i processi, tanto che a partire +dalla versione 2.3 della \acr{glibc} viene a sostituire \func{\_exit} (tramite +un \textit{wrapper} che la utilizza al suo posto) per la terminazione di tutti +i \textit{thread} di un processo si deve usare la funzione di sistema +\func{exit\_group}, il cui prototipo è: + +\begin{funcproto}{ +\fhead{linux/unistd.h} +\fdecl{void exit\_group(int status)} +\fdesc{Termina tutti i \textit{thread} di un processo.} +} +{La funzione non ha errori e pertanto non ritorna.} +\end{funcproto} + +La funzione è sostanzialmente identica alla \textit{system call} \func{\_exit} +ma a differenza di quest'ultima, che termina solo il \textit{thread} +chiamante, termina tutti \textit{thread} del processo. + + +\section{La sincronizzazione dei \textit{thread}} +\label{sec:pthread_sync} + \subsection{I \textit{mutex}} \label{sec:pthread_mutex} @@ -103,14 +149,19 @@ delle \acr{glibc}. \itindend{thread} +\subsection{I \textit{thread} e i segnali.} +\label{sec:thread_signal} + +% TODO trattare tkill e tgkill per l'invio di segnali a thread, fare un +% capitolo apposito su thread e segnali + + + % TODO troppe cose, ma segue list di notizie correlate % aggiunta rt_tgsigqueueinfo con il kernel 2.6.31 -% TODO trattare tkill e tgkill per l'invio di segnali a thread, fare un -% capitolo apposito su thread e segnali - % LocalWords: thread multitasking POSIX sez Posix Library kernel glibc mutex