Sobes.tech
Junior — Middle

Ինչ մեթոդներ կարելի է օգտագործել փոխադարձ արգելափակումների կանխարգելման համար բազմատող ծրագրերում։

sobes.tech AI

Պատասխան AI-ից

Բազմասխալ ծրագրերում միմյանց խոչընդոտող (deadlock) կանխելու համար կարելի է օգտագործել մի քանի մեթոդներ:

  • Անցանկալի ներսի բլոկավորումները խուսափել: փորձեք միաժամանակ մի քանի բլոկավորումներ չստանալ:
  • Արժեքների ձեռքբերման կարգը: միշտ ձեռք բերեք բլոկավորումները նույն կարգով:
  • Timeout-ների օգտագործում: փորձել բլոկավորումը ձեռք բերելու ժամանակ, օգտագործեք timeout, որպեսզի չսպասեք անսահման:
  • Բարձր մակարդակի սինխրոնիզացիայի primitives-ների օգտագործում: օրինակ, DispatchQueue iOS-ում, որը հեշտացնում է թելերի կառավարումը:

Նմուշ՝ ռեսուրսների ձեռքբերման կարգը:

// միշտ առաջինը ձեռք բերեք lockA-ն, հետո lockB-ն
lockA.lock()
lockB.lock()
// աշխատեք ռեսուրսների հետ
lockB.unlock()
lockA.unlock()