Fil d'execució: diferència entre les revisions

Contingut suprimit Contingut afegit
Cap resum de modificació
Cap resum de modificació
Línia 1:
UnEn [[Informàtica | informàtica]], un '''fil d'execució''' (''thread'' en anglès) és una característica dels [[Sistema_operatiu | sistemes operatius]] que permet a un procés executar diferents tasques al mateix temps. Cada fil té un procés que aha de ser executat. Aquesta característica dona la possibilitat al programador de dissenyar un programa que execute diferents funcions concurrentment. Cadascun dels fils accedix a unes dades, quan una d'aquestes es utilitzada per dos o més fils es diu que la dada està en conflicte. Cada fil té una secció a on s'accedix a estes variables, la qual s'anomena [[secció crítica]].
 
La tècnica de programació amb fils d'execució s'anomena [[multifil]] ([[Multithreading]] en anglès) i permet simplificar el disseny d'aplicacions concurrents i millorar el rendiment de la creació de processos. Cadascun dels fils accedix a unes dades, quan una d'aquestes es utilitzada per dos o més fils es diu que la dada està en conflicte. Cada fil té una secció a on s'accedix a estes variables, la qual s'anomena [[secció crítica]]. Tots el fils s'executen concurrentment. Aquesta característica és possible gracies al canvis de context.
Tots el fils s'executen concurrentment. Aquesta característica és possible gracies al canvis de context.
 
Els canvis de context es produeixen quan un fil que està al processadorsprocessador esés eliminat i entra un altre. Fent canvis de context molt ràpidament donem la sensació de que totes lesels tasquesfils s'executen simultàniament.
 
En els sistemes multifil tipus de sistemes, un mateix procés pot estar format per múltiples fils d'execució. Els diferents fils que formen part d'un mateix procés, comparteixen certs recursos com l'espai de memòria, els arxius oberts, els permisos, etc. En canvi, cada fil consta de les seves pròpies instruccions, la seva pròpia pila d'execució, s'executen a diferents velocitats (cada fil té el seu propi registre PC) i tenen el seu propi estat d'execució.
 
Els fils d'execució, també són coneguts com a '''processos lleugers'''. L'origen del nom rau en el fet que els fils d'execució consumeixen menys recursos de sistema que els processos.
 
La majoria de llenguatges de programació moderns, disposen de llibreries específiques per tal de programar amb fils i altres com C o C++ han d'utilitzar les crides de sistema que donen aquest suport.
 
Un parell d'exemples típics on s'utilitzen fils són:
 
*'''Aplicacions gràfiques''': Un fil s'encarrega de la interfície gràfica d'usuari mentrestant un altre realitza les operacions.
*'''Aplicacions client/servidor''': el servidor crea múltiples fils per tal de donar servei a múltiples clients alhora.
 
En sistemes POSIX hi ha 2 llibreries per a treballar amb fils d'execució:
 
*Native POSIX Thread Library per a Linux
*POSIX Threads standard
 
==Vegeu també==