Mai multe instante de executie in cadrul unui singur program sunt denumite thread-uri (fire de executie). O denumire a thread-urilor este lightweight process. Desi empirica spune destul de multe lucruri despre functionalitatea thread-urilor. O definitie mai precisa ar fi ``un thread este o secventa de control in cadrul unui proces''. Pana acum toate programele rulau in cadrul unui singur proces, iar toate procese de pana acuma aveau un singur thread de executie.
Deosebirea intre apelul fork si crearea unui nou thread este aceea ca apelul fork creeaza o copie identica a procesului parinte si ii stabileste noului proces un identificator propriu. Noul proces este planificat independent, si se executa de obicei intr-un cadru independent de procesul parinte. De partea cealalta crearea unui thread este mult mai putin costisitoare. Crearea unui nou thread in cadrul unui proces inseamna crearea unei stive locale (pentru variabile proprii) si a unui set propriu de registre. In rest informatiile sunt partajate: variabilele globale, descriptorii de fisier, handler-ele de semnale, etc.