Junior — Middle
87
Әртүрлі бағдарламалау тілдерінде семафорлар немесе олардың баламалары арқылы ағындар арасындағы синхрондауды қалай жүзеге асырдыңыз?
AI-дан жауап
sobes.tech AI
Семафорлар ортақ ресурстарға қол жеткізуді басқару үшін пайдаланылады, олар бірнеше ағын бір уақытта орындалуы мүмкін белгілі бір код учаскесін шектейді.
Python-да бұл үшін threading модулінен Semaphore класы бар:
import threading
# Максималды рұқсат саны 2 болатын семафор құру
sem = threading.Semaphore(2)
def worker(num):
print(f"Ағын {num} семафорды күтуде")
with sem: # Семaфорды алу
print(f"Ағын {num} критикалық бөлімге кірді")
# Мұнда ортақ ресурспен жұмыс орындалады
import time
time.sleep(1)
print(f"Ағын {num} критикалық бөлімнен шықты")
threads = []
for i in range(5):
t = threading.Thread(target=worker, args=(i,))
threads.append(t)
t.start()
for t in threads:
t.join()
Басқа тілдерде, мысалы Java-да, java.util.concurrent пакетінен Semaphore класы бар, ол ұқсас принциппен жұмыс істейді.
Осылайша, семафорлар бірнеше ағынның бір уақытта жұмыс істеуін бақылауға мүмкіндік береді, жарыс жағдайларын болдырмайды және дұрыс синхрондауды қамтамасыз етеді.