Sobes.tech
Junior — Middle

რამდენი მეთოდი არსებობს მრავალთრაკიანი პროგრამებში ურთიერთშეზღუდვების თავიდან ასაცილებლად?

sobes.tech AI

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

მრავალთანიანი პროგრამებში ურთიერთბლოკირების (deadlock) თავიდან ასაცილებლად, შესაძლებელია რამდენიმე მეთოდის გამოყენება:

  • შეეცადეთ არ ჩააშენოთ შიდა ბლოკირებები: ერთდროულად არ მიიღოთ რამდენიმე ბლოკირება.
  • რესურსების მიღების წესის განსაზღვრა: ყოველთვის მიიღეთ ბლოკირებები ერთსა და იმავე წესით.
  • Timeout-ების გამოყენება: ბლოკირების მცდელობისას გამოიყენეთ timeout, რათა არ დაელოდოთ უსასრულოდ.
  • მაღალი დონის სინქრონიზაციის primitive-ების გამოყენება: მაგალითად, iOS-ის DispatchQueue, რომელიც მარტივს ხდის თრედების მართვას.

რესურსების მიღების წესის მაგალითი:

// ყოველთვის პირველად მიიღეთ lockA, შემდეგ lockB
lockA.lock()
lockB.lock()
// სამუშაო რესურსებთან
lockB.unlock()
lockA.unlock()