Sobes.tech
Junior — Middle

შეგიძლიათ ახსნათ, რა ტიპის ბლოკირებები არსებობს და როგორ მუშაობენ მრავალთრედული პროგრამირებაში?

sobes.tech AI

პასუხი AI-სგან

Күп иштөө программалаштырууда уртак ресурсларга кирүүнү синхрондоо үчүн ар кандай түрдөгү блоктор бар:

  • Мьютекс (Mutual Exclusion) — ресурска эксклюзивдүү кирүүнү камсыз кылат. Бир эле агым ошол учурда мьютексти колдоно алат.
  • Рекурсивдүү мьютекс — ошол эле агымга блокту бир нече жолу алуу мүмкүнчүлүгүн берет, өз ара тоскоолдук кылбай.
  • Окуу-жазуу блокировкасы (Read-Write Lock) — бир нече агым ресурсты бир убакта окуй алат, бирок жазуу гана эксклюзивдүү болот.
  • Семафор — бир убакта ресурска кире алчу агымдардын санын чектейт.
  • Spinlock (активдүү күтүү) — агым циклде блокдун жеткиликтүүлүгүн текшерет, күтүү абалына өтпөй.

Swiftте мьютекс колдонуу мисалы:

let lock = NSLock()

func criticalSection() {
    lock.lock()
    // Критикалык бөлүм
    lock.unlock()
}

Блокировка түрүн тандоо ишке жана иштөө жана коопсуздук талаптарына көз каранды.