Deadlock чист?
sobes.tech AI
Ҷавоб аз AI
Deadlock (взаимна блокировка) — ситуация в многопоточна или многопроцесна среда, когато два или повече процеса (или нишки) се блокират взаимно, очаквайки освобождаването на ресурси, заети от другия.
Пример: Нишка А е взела ресурс 1 и чака ресурс 2, а нишка Б е взела ресурс 2 и чака ресурс 1. Никой от тях не може да продължи — възниква взаимна блокировка.
В Go deadlock може да възникне, например, ако горутината се опитва да изпрати или получи данни от канал, но друга горутина не е готова да приеме или изпрати данни, и всички горутини са блокирани.
Пример за deadlock в Go:
func main() {
ch := make(chan int)
ch <- 1 // Опит за изпращане към канал без получател — програмата ще блокира
}
Тук програмата ще застане, защото няма горутина, която да чете от канала, и изпращането се блокира завинаги.
За да се предотвратят deadlock-ите, е важно правилно да се проектира взаимодействието между нишките и да се използват механизми за синхронизация с внимание.