miniatura|Sincronització dels rellotges. La sincronització (del grec συν (syn), "unit", i χρόνος (chronos), "temps") és l'ajust temporal d'esdeveniments perquè ocorrin al mateix temps o en un ordre predefinit. El concepte s'utilitza en àmbits diferents, com l'electrònica, la informàtica, les comunicacions i la multimèdia.

Aplicacions En electrònica s'utilitza un senyal de rellotge per sincronitzar esdeveniments com la transferència de dades. En multimèdia, la sincronització assegura que l'àudio i el vídeo mantinguin el mateix temps de reproducció i no presentin desfasament. També es parla de sincronització de dades quan dos dispositius o serveis s'actualitzen perquè continguin la mateixa informació, com pot passar entre un telèfon i un ordinador.

En informàtica En informàtica, la sincronització coordina l'execució de diversos processos, fils o tasques perquè accedeixin correctament a recursos compartits. Sense mecanismes de sincronització, dues operacions concurrents poden modificar el mateix estat en un ordre no previst i provocar una condició de carrera. Per evitar-ho s'utilitzen primitives com panys, semàfors, esdeveniments i condicions, que permeten protegir seccions crítiques, limitar la concurrència o avisar altres tasques quan un recurs està disponible.

La sincronització no serveix només per impedir errors. També pot expressar dependències entre tasques: esperar que una operació acabi abans de continuar, limitar el nombre de connexions simultànies a un servei o despertar diversos treballadors quan hi ha dades disponibles. En sistemes multifil, un pany pot impedir que dos fils modifiquin alhora una estructura compartida. Un semàfor, en canvi, permet un nombre limitat d'accessos concurrents, útil quan hi ha pocs recursos disponibles.

Aquest concepte també és rellevant en la programació asíncrona. En Python asyncio, les tasques s'executen normalment en un sol fil, però poden aparèixer errors si una corutina llegeix o modifica estat compartit i cedeix el control amb await abans d'acabar l'operació. Fowler descriu aquests problemes com errors de concurrència d'un sol fil i mostra l'ús de asyncio.Lock, Semaphore, Event i Condition per coordinar corutines i controlar l'accés a recursos compartits.

Referències

Enllaços externs

Sincronització entre processos

Categoria:Electrònica Categoria:Estàndards horaris Categoria:Terminologia informàtica