Un thread est un ensemble d'instructions qui sont exécutées dans le contexte d'un processus. Ce sont des entités d'exécution indépendante appartenant cependant au processus lanceur (voir figure 1.
Chaque thread possède son propre pointeur de programme (PC) et sa propre zone de pile afin de pouvoir conserver leur contexte lors de l'ordonnancement. Par contre, les threads partagent le code du processus ainsi que le segment mémoire.
La mise en oeuvre des threads prend tout son intérêt dans un contexte multiprocesseurs (pas nécessairement processeurs de calculs : les threads permettent aussi de tirer partie des co-processeurs). De ce fait, il est possible de faire plusieurs entrées/sortie en parallèle réel (non simulé) et de gérer des évènements simultanés. Ce qui est tout à fait satisfaisant du point de vue de la programmation événementielle (interfaces graphiques).
L'appel d'un thread est similaire à celui d'une fonction mais il n'y a pas d'attente d'exécution de code (pas de retour d'un thread). Le thread est mis en place et s'exécute en parallèle avec le code principal du processus. Du point de vue de la portabilité, elle est garantie par la conformité à la norme POSIX.