Sobes.tech
Middle — Middle+

Семафорҳо дар куҷо ва чӣ гуна дар меъмории системаҳои нармафзор истифода мешаванд?

sobes.tech AI

Ҷавоб аз AI

Программалар системалары архитектурасында семафорлар күп ишекле мохиттә чикләнгән ресурсларга керүне идарә итү өчен кулланыла, ярыш шартларын булдырмый һәм синхронлаштыруны тәэмин итә.

Семафорларны куллану төп сценарийлары:

  • Бер үк вакытта ресурска керә алучы ишекләр санына чик кую (мәсәлән, мәгълүмат базасына тоташу пулын куллану).
  • Критик бүлекләрне үтәгәндә ишекләр эшен координацияләү.
  • Ишекләр арасында көтү һәм хәбәр итү механизмнарын тормышка ашыру.

Javaда семафор java.util.concurrent.Semaphore классында тормышка ашырылган.

Өч ишекле ресурска керүне чикләү өчен семафор куллану мисалы:

import java.util.concurrent.Semaphore;

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

    public void accessResource() {
        try {
            semaphore.acquire(); // Рөхсәт сорау
            System.out.println(Thread.currentThread().getName() + " ресурска керде");
            // Ресурс белән эшләү
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
        } finally {
            semaphore.release(); // Рөхсәтне бушату
            System.out.println(Thread.currentThread().getName() + " ресурсны бушатты");
        }
    }
}

Шулай итеп, семафорлар күп ишекле керүне контрольдә тотарга ярдәм итә һәм катлаулы системаларда ишекләр арасында дөрес үзара бәйләнешне тәэмин итә.