Почему в этом коде не возвращается ошибка взаимоблокировки?
Приведенный код импортирует пакет net/http, который инициализирует выполняющие горутины фоновое голосование. Это непреднамеренно отключает детектор взаимоблокировки, предотвращая возврат ожидаемой ошибки взаимоблокировки.
Чтобы понять это поведение, рассмотрите отрывок кода:
package main
import (
"fmt"
"net/http"
)
func main() {
var ch = make(chan int)
ch В этом случае основная функция создает канал и отправляет в него значение, что может привести к взаимоблокировке. Однако, поскольку пакет net/http был импортирован, детектор взаимоблокировок отключен и ошибка не возвращается.
Если импорт удален:
package main
import "fmt"
func main() {
var ch = make(chan int)
ch Ошибка взаимоблокировки теперь корректно возвращается, поскольку горутины фонового опроса не активны.
Это поведение соответствует обсуждению проблемы GitHub: https://github.com/golang /go/issues/12734, где объясняется, что импорт пакета net/http отключает детектор взаимоблокировок.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3