![]() | See artikkel ootab keeletoimetamist. |
Semafor on informaatikas andmestruktuur, mis võimaldab piirata määratud koodi sektsiooni väärtustamist nii, et seda saab korraga teha kuni n lõime. Semafore kasutatakse programmi protsesside sünkroonimises, kus ülesanne vajab kindlat ülemist piirarvu kindlatele protsessidele, mis võivad kõrvuti joosta.
Tegemist on klassikalise meetodiga jagatud ressursside juurdepääsu piiramisel, nagu seda on jagatud mälu multiprogrammeeritavas keskkonnas (süsteem, kus mitmed programmid võivad olla käivitatud samaaegselt või olla kordamisi käivitusjärjekorras käivitatud samaaegselt). Semafore eksisteerib mitmes variandis, kuigi tavaliselt mõeldakse selle all semaforide loetelu, kuna binaar (n=1) semafore tuntakse paremini ingliskeelse lühendiga mutex (Mutual exclusion) ehk mõlemapoole välistus (st lõim lukustab objekti/väärtuse, väärtustab selle ja avab luku. Kuni lukk on peal, teised lõimed objekti väärtustada ei saa.).
Semaforid on klassikaline lahendusviis hoidmaks ära lõimede võistlusmomenti ressursi pärast probleemis, nagu seda on Einestavad filosoofid, kuigi nad ei hoia ära kõigi lõimede lukustumist.