Semafor (programovanie): Rozdiel medzi revíziami

Smazaný obsah Přidaný obsah
d r2.7.1) (robot Zmenil: fa:نشانبر
Vegbot (diskusia | príspevky)
d Robot automaticky nahradil text: (-== Pozri tiež == +== Pozri aj ==, -==Pozri tiež +== Pozri aj ==, -==Pozri tiež == +== Pozri aj ==, -== Pozri tiež== +== Pozri aj ==); kozmetické zmeny
Riadok 9:
 
 
== Úvod ==
 
K semaforu možno pristupovať len pomocou nasledovných operácii. Tie, ktoré sú označené ako atomické, nemôžu byť prerušené (t.j. ak sa systém rozhodne, že je čas "zmeniť" proces, nemôže ho zmeniť uprostred týchto inštrukcií). Dôvod je popísaný nižšie.
Riadok 81:
Za povšimnutie stojí, že číslo na semafore nie je vždy nutne rovné hodnote počtu voľných zásobníkov. Testovanie a čakanie na podmienke s >= 0 v P je potrebné na zabezpečenie toho, aby pri pridávaní sa do čakacej fronty procesy nerušili ostatným požiadavky: proces nezmení hodnotu na semafore, pokiaľ nie je prvý vo fronte. V reálnej implementácii je to robené bez toho, aby sa zobudil čakajúci proces len kvôli vykonaniu medzikroku -- zmenšenie hodnoty.
 
== Semafory v dnešnej dobe používané programátormi ==
 
Semafory sa stále bežne používajú v [[programovací jazyk|programovacích jazykoch]], ktoré nepodporujú inú priamejšiu formu synchronizácie. Sú to primitívne synchronizačné mechanizmy v mnohých [[operačný systém|operačných systémoch]]. Trend vo vývoji programovacích jazykov avšak smeruje k viac štruktúrovaným formám synchronizácie, ako [[monitor (synchronizácia)|monitormonitory]]y a [[kanál (programovanie)|kanálkanály]]y. Navyše semafory neriešia (viac-zdrojové) deadlocky, nechránia programátora pred ľahkými chybami znova použitia semafora, ktorý je už používaný tým istým procesom a uvoľnenia semafora na konci po použití.
 
 
Riadok 91:
 
 
== Ukážkové použitie ==
 
Keďže semafory počítajú s hodnotou, môžu byť použité pri dosiahnutí určitého cieľa spoluprácou viacerými vláknami. Predstavme si príklad:
Riadok 107:
 
 
== Pozri tiežaj ====
 
* [[Problém fajčiarov cigariet]]
 
* [[Problém hladných filozofov]]
 
* [[Problém čitateľov a zapisovateľov]]
 
* [[Problém spiaceho holiča]]
 
== Poznámky ==
 
<references />
Riadok 123:
 
 
== odkazy ==
 
* ''Over Seinpalen (EWD 74)'', v ktorom Dijkstra uvádza koncept (po dánsky).
Riadok 131:
 
 
== Externé odkazy ==
 
* [http://www.cs.utexas.edu/users/EWD/transcriptions/EWD00xx/EWD74.html Over Seinpalen (EWD 74)], v ktorom Dijkstra uvádza koncept (po dánsky)
 
* [http://www.opengroup.org/onlinepubs/009695399/basedefs/semaphore.h.html semaphore.h] programovací interface - The Open Group Base Specifications Issue 6, IEEE Std 1003.1 (EN)
 
* [http://codeproject.com/csharp/inprocsemaphore.asp Jednoduché použitie procesu v semafore v jazyku C#] (EN)
 
* [http://www.inet.sk/clanok/3752/synchronizacia-v-linuxe-semafory Iný popis tématiky a príklady v jazyku C] (SK)
 
* [http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Semaphore.html J2SE class api/java/util/concurrent/Semaphore] (EN)
 
* [http://www.python.org/doc/lib/semaphore-objects.html Python Semaphore Objects] (EN)
 
* [http://cs.gmu.edu/cne/modules/ipc/ Inter-Process Communication Tutorial] (EN)
 
* [http://c2.com/cgi/wiki?SemaphoresForMutualExclusion Popis semaforov od Portland Pattern Repository] (EN)
 
*[http://greenteapress.com/semaphores/ ''The Little Book of Semaphores''], od Allena B. Downeyho (EN)
 
*[http://www.beatjapan.org/mirror/www.be.com/aboutbe/benewsletter/Issue26.html#Benaphores "BE Engineering Insights: Benaphores"], od Benoita Schillinga; detaily optimalizácie, ktoré môžu byť použité na implementáciu semaforov (EN)
 
* [http://greenteapress.com/semaphores/ ''The Little Book of Semaphores''], od Allena B. Downeyho (EN)
 
* [http://www.beatjapan.org/mirror/www.be.com/aboutbe/benewsletter/Issue26.html#Benaphores "BE Engineering Insights: Benaphores"], od Benoita Schillinga; detaily optimalizácie, ktoré môžu byť použité na implementáciu semaforov (EN)
 
[[Kategória:Kontrola súbežnosti]]