Semaphore (programare) este

Definirea unui Semaphore

Un semafor este un obiect cu care puteți efectua trei operații.

Să presupunem că există o astfel de secțiune de cod:

Apoi, nu mai mult de cinci fire pot realiza simultan funcția DoSomething ().







În semafoare mai complexe, poate fi utilizată o coadă; în timp ce firele care așteaptă să fie eliberate din semafor vor trece prin semafor exact în ordinea în care au apelat enter ().

Utilizând semafoare

Iată câteva dintre problemele pe care semafore le pot rezolva.

  • interzicerea executării simultane a anumitor secțiuni de cod;
  • acces alternativ la o resursă critică (o resursă importantă pentru care accesul simultan nu este posibil).

Următorul exemplu arată cum se configurează accesul alternativ la consola.

Acest cod va ajuta la prevenirea unei înregistrări ca

Probleme de semafor

În primul rând, puteți scrie un program cu o "scurgere de semafor" apelând enter () și uitând să apelezi la concediu (). Erorile mai puțin frecvente apar atunci când se numește de două ori ().

În al doilea rând, semafoarele sunt pline de blocarea reciprocă a firelor. În special, acest cod este periculos:

În al treilea rând, rămâne problema sincronizării procedurilor de semafor în sine. De exemplu, este posibilă următoarea situație: două procese așteaptă lansarea semaforului. După ce semaforul este eliberat, primul proces "învață" despre acest lucru, dar nu are timp să reducă contorul, cum este transferat controlul la al doilea proces. Al doilea proces, de asemenea, învață despre eliberarea semaforului, reduce contorul și intră în porțiunea protejată a codului. Aici controlul este trecut la primul proces, care reduce din nou contorul și intră și în zona protejată a codului. Ca rezultat, avem un exces de numărul de procese permise.

Această problemă nu are o soluție algoritmică. Este permis să localizeze o procedură de așteptare într-o secțiune critică, care nu este permis să treacă de la procesul de la un proces de oricare dintre tehnicile de programare, cum ar fi verificarea de pavilion și să-l crească cu o singură instrucțiune mașină.







Link-uri externe

Urmăriți ce înseamnă "Semafor (programare)" în alte dicționare:

PARALELE programare - programare secțiune, referitoare la studiul și dezvoltarea de metode și instrumente pentru: a) o descriere adecvată a paralelismul naturale în programele modelate în sistemele și procesele de calculator și controlate de computer, b) prelucrarea informațiilor paralelizare ... Enciclopedia de Matematică

Clasa (programare) - Acest termen are alte semnificații, vezi Clasa. O clasă în programare este un set de metode și funcții. Alte tipuri de date metaclase, interfețe, structuri, enumerări sunt caracterizate de propriile lor, altele ... ... Wikipedia

Interfață (programare orientată pe obiecte) - Acest termen are alte semnificații, vezi interfața (valorile). Interface (lat. Inter «între» și fața «suprafață") semantică și sintaxă în codul folosit pentru a specifica ... ... Wikipedia

Obiect (programare) - Acest termen are alte semnificații, vedeți Obiect (valori). Un obiect în programare este o entitate din spațiul virtual care are o anumită stare și comportament care a dat valori de proprietăți (atribute) și ... ... Wikipedia

Structura (programare) - Acest termen are alte semnificații, vezi Structura (valori). Structura este proiectarea majorității limbajelor de programare, permițând să conțină un set de variabile de diferite tipuri. În limbile structurii familiei Pascal ... ... Wikipedia

Blocarea (programarea) - Acest termen are alte semnificații, vezi Lock. În domeniul informaticii, blocarea este un mecanism de sincronizare care permite accesul exclusiv la o resursă partajată între mai multe fire. Blochează într-un fel ... ... Wikipedia

GOST 19781-90: Furnizarea de software de procesare a informațiilor. Termeni și definiții - Terminologie GOST 19781 90: Furnizarea de software de procesare a informațiilor. Termenii și definițiile documentului original: Program 9. Program specific Non relocalizabilă în programul de limbaj mașină, punerea în aplicare a care depinde de ei ... ... Dicționar de termeni documentației normative și tehnice

Comunicarea interprocesată (IP) este un set de metode pentru schimbul de date între mai multe fire în unul sau mai multe procese. Procesele pot fi executate pe unul sau mai multe calculatoare conectate printr-o rețea. Căile IPC sunt împărțite ... ... Wikipedia







Articole similare

Trimiteți-le prietenilor: