Junior — Middle
რამდენი მეთოდი არსებობს მრავალთრაკიანი პროგრამებში ურთიერთშეზღუდვების თავიდან ასაცილებლად?
sobes.tech AI
პასუხი AI-სგან
მრავალთანიანი პროგრამებში ურთიერთბლოკირების (deadlock) თავიდან ასაცილებლად, შესაძლებელია რამდენიმე მეთოდის გამოყენება:
- შეეცადეთ არ ჩააშენოთ შიდა ბლოკირებები: ერთდროულად არ მიიღოთ რამდენიმე ბლოკირება.
- რესურსების მიღების წესის განსაზღვრა: ყოველთვის მიიღეთ ბლოკირებები ერთსა და იმავე წესით.
- Timeout-ების გამოყენება: ბლოკირების მცდელობისას გამოიყენეთ timeout, რათა არ დაელოდოთ უსასრულოდ.
- მაღალი დონის სინქრონიზაციის primitive-ების გამოყენება: მაგალითად, iOS-ის
DispatchQueue, რომელიც მარტივს ხდის თრედების მართვას.
რესურსების მიღების წესის მაგალითი:
// ყოველთვის პირველად მიიღეთ lockA, შემდეგ lockB
lockA.lock()
lockB.lock()
// სამუშაო რესურსებთან
lockB.unlock()
lockA.unlock()