Junior — Middle
Көп жиптүү колдонмодо эки жиптин өз ара блоктолушун алдын алуу үчүн эмне кылуу керек?
sobes.tech AI
AIден жооп
Өз ара блокировка (deadlock) эки же көп жиптердин бири-биринен ресурстарды бошотконун күтүп турганда пайда болот. Deadlockту алдын алуу үчүн төмөнкү ыкмаларды колдонсо болот:
- Кошумча блокировкалардан качуу: бир убакта алынган ресурстардын санын азайтуу.
- Ресурстарды алуу тартибин белгилөө: бардык жиптерде ресурстарды дайыма бир эле тартипте алуу.
- Timeoutтарды колдонуу: блокировканы алуу аракетинде, timeout колдонуп, чексиз күтүүнү алдын алуу.
- Жогорку деңгээлдеги синхрондоштуруу примитивдерин колдонуу: мисалы, Androidдеги
java.util.concurrentпакети, deadlock мүмкүнчүлүгүн азайтат.
Ресурстарды тартиптүү алуу мисалы:
synchronized (resourceA) {
synchronized (resourceB) {
// ресурстар менен иштөө
}
}
Эгер бардык жиптер биринчи resourceA, андан кийин resourceB тартибин сактаса, deadlock болбойт.