Middle
რა არის deadlock?
sobes.tech AI
პასუხი AI-სგან
Deadlock (შეთანხმებული ბლოკირება) — არის მდგომარეობა მრავალთრაკიან პროგრამაში, სადაც ორი ან მეტი თრაკი უკუღმართად ბლოკავს ერთმანეთს, ელოდება სხვა თრაკის მიერ დაკავებული რესურსების გათავისუფლებას. შედეგად, არც ერთი თრაკი ვერ აგრძელებს მუშაობას.
კლასიკური deadlock-ის მაგალითი:
- A თრაკი იღებს რესურს 1-ს და ელოდება რესურს 2-ს.
- B თრაკი იღებს რესურს 2-ს და ელოდება რესურს 1-ს.
ორივე თრაკი უკუღმართად ბლოკირებულია.
Deadlock-ის თავიდან ასაცილებლად გამოიყენება:
- რესურსების მიღების მკაცრი წესრიგი.
- დროის გასვლის (timeout) გამოყენება ბლოკირების დროს.
- არ ბლოკირებადი ალგორითმების გამოყენება.
Java-ს მაგალითი:
synchronized(resource1) {
synchronized(resource2) {
// რესურსებთან მუშაობა
}
}
თუ სხვა თრაკი ცდილობს რესურსების მიღებას საპირისპირო წესით, შეიძლება მოხდეს deadlock.