Synkronointi (engl. synchronization) tietokoneen ohjelmoinnissa tarkoittaa hallittua synkronointimekanismia rinnakkaisten ohjelmien välisen jaetun tiedon käsittelyyn.[1]
Synkronointia tarvitaan, jotta kahden rinnakkain samanaikaisesti tapahtuvan muutoksen välillä ei synny kilpatilannetta (engl. race condition), jolloin ohjelmat voivat päivittää yhtä aikaa samaa muuttujaa tai tietorakennetta, mikä yleensä johtaa virheeseen. Tämän takia käyttöjärjestelmä tarjoaa mekanismeja resurssien hallittuun synkronointiin (engl. synchronization).
Kilpatilanne voi syntyä myös yhden suorittimen järjestelmässä riippuen säikeiden ja prosessien vuoronnuksesta (context switch) sekä laitteistokeskeytyksien käsittelystä.[2][3] Synkronoinnilla pyritään välttämään kilpatilanteita, mutta virheellinen synkronointi voi aiheuttaa nälkiintymisen tai lukkiutumisen. Ohjelmakoodin uudelleen käytettävyyttä voi haitata synkronoinnin ja muun ohjelmakoodin välinen keskinäinen riippuvuussuhde.[4]
Nykyisin käytettävät lukottomat synkronointimekanismit välttävät suuren osan aiemmin tunnetuista ongelmista. Lukottomia menetelmiä ovat atomiset operaatiot sekä Read-Copy-Update (RCU) mekanismi.[5][6]
<ref>
-elementti; viitettä rtsched
ei löytynyt<ref>
-elementti; viitettä ibmsync
ei löytynyt