Fil d'execució: diferència entre les revisions
Contingut suprimit Contingut afegit
Cap resum de modificació |
Cap resum de modificació |
||
Línia 1:
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.
Els canvis de context es produeixen quan un fil que està al
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é==
|