Sobes.tech
Middle — Middle+

Kde a ako sa používajú semafory v architektúre softvérových systémov?

sobes.tech AI

Odpoveď od AI

Semafory v architektúre softvérových systémov sa používajú na riadenie prístupu k obmedzeným zdrojom v prostredí s viacerými vláknami, predchádzajú závodným podmienkam a zabezpečujú synchronizáciu.

Hlavné scenáre použitia semaforov:

  • Obmedzenie počtu vlákien, ktoré môžu súčasne pristupovať ku zdroju (napríklad pool pripojení k databáze).
  • Koordinácia práce vlákien pri vykonávaní kritických sekcií.
  • Implementácia mechanizmov čakania a oznámenia medzi vláknami.

V Jave je semafor implementovaný v triede java.util.concurrent.Semaphore.

Príklad použitia semaforu na obmedzenie prístupu ku zdroju tromi vláknami:

import java.util.concurrent.Semaphore;

public class ResourceAccess {
    private final Semaphore semaphore = new Semaphore(3);

    public void accessResource() {
        try {
            semaphore.acquire(); // Žiadosť o povolenie
            System.out.println(Thread.currentThread().getName() + " získal prístup ku zdroju");
            // Práca so zdrojom
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } finally {
            semaphore.release(); // Uvoľnenie povolenia
            System.out.println(Thread.currentThread().getName() + " uvoľnil zdroj");
        }
    }
}

Týmto spôsobom semafory pomáhajú riadiť konkurenčný prístup a zabezpečujú správnu interakciu medzi vláknami v zložitých systémoch.