치명적인 오류: 모든 고루틴이 잠자기 상태입니다. 교착 상태입니다! 오류 실행
Feb 10, 2024 pm 04:42 PMphp 편집기 Strawberry는 이 기사에서 일반적인 프로그래밍 오류를 소개합니다: 치명적인 오류: "모든 고루틴이 절전 모드입니다 - 교착 상태! 오류 실행". 이는 Go 언어에서 흔히 발생하는 실수 중 하나이며 개발자가 자주 직면하는 문제 중 하나입니다. 이 기사에서는 모든 사람이 이 문제를 더 잘 이해하고 처리할 수 있도록 이 오류의 원인과 해결 방법을 자세히 설명합니다. 당신이 초보자이든 숙련된 개발자이든 이 글을 통해 귀중한 정보와 팁을 얻을 수 있습니다. 함께 탐험해 보세요!
질문 내용
저는 동시성에 익숙하지 않아서 채널과 고루틴을 사용하여 예제를 시도해 보았습니다. 나는 생산자-소비자 모델을 원합니다. 생산자 함수는 항상 임의의 문자열을 제공하고 소비자는 이를 대문자로 만들어 수정합니다. 제한된 시간(2초) 동안 실행하고 싶습니다.
으아악하나의 배열 요소와 일부 오류만 수신됩니다. 이 예제가 작동하려면 어떤 변경이 필요합니까?
출력:
둘
치명적인 오류: 모든 고루틴이 잠자기 상태입니다 - 교착 상태입니다!
고루틴 1 [찬 수신]: main.main()
코루틴 6 [찬 보내기]: main.producer({0xc00004e040, 0x4, 0x0?}, 0x0?) 메인으로 제작되었습니다. 기본 종료 상태 2
해결 방법
소비자가 루프에서 실행되어야 합니다. 이는 이미 언급되었습니다.
consumer의 첫 번째 매개변수를 문자열이 아닌 chan字符串
로 변경하세요. 이렇게 하면 제작자는 시간 제한이 만료될 때까지 소비자가 다른 채널에 게시할 수 있도록 이 채널에 계속 쓸 수 있습니다.
이제 go consumer()
之前的主函数中,您正在等待生产者对 c1
通道的第一个响应。不要这样做,而是将 c1
를 호출하면 채널이 첫 번째 인수로 전달됩니다.
이는 생산자가 c1
채널에 계속해서 난수를 쓰고, 소비자가 2초가 될 때까지 d1 채널에 계속해서 모든 대문자 텍스트를 쓰는 것을 보여줍니다.
위 내용은 치명적인 오류: 모든 고루틴이 잠자기 상태입니다. 교착 상태입니다! 오류 실행의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

인기 기사

인기 기사

뜨거운 기사 태그

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











리플렉션을 사용하여 golang의 비공개 필드 및 메서드에 액세스하는 방법

Golang 기술로 분산 시스템을 설계할 때 주의해야 할 함정은 무엇입니까?
