고루틴에서 파이프라인 io.Copy를 기다리는 동안 교착 상태가 발생하는 것은 일반적인 문제입니다. 고루틴에서 io.Copy가 완료될 때까지 기다릴 때 파이프가 제대로 닫히지 않으면 교착 상태가 발생합니다. 이 경우 고루틴은 계속 데이터를 기다리며 실행을 계속할 수 없습니다. 이 문제에 대한 해결책은 io.Copy가 완료된 후 파이프를 수동으로 닫아 고루틴이 제대로 종료될 수 있는지 확인하는 것입니다. PHP 편집기 Apple은 이러한 유형의 교착 상태 상황을 더 잘 처리하는 데 도움이 되기를 바라며 이 문제의 원인과 해결책을 자세히 소개했습니다.
아래 코드에서 io.copy
的调用永远不会返回;它只是无限期地阻塞,导致死锁。仅当使用 io.pipe
将 io.reader
连接到 os.stdout
io.writer
时,才会发生此行为。但是,我需要使用管道,因为在我的完整代码中,我使用 io.multiwriter
和 io.pipe
s 将一个 io.reader
连接到许多需要 io.reader
에 대한 함수입니다.
출력:
으아악코드에 대한 플레이그라운드 링크는 다음과 같습니다: https://goplay.tools/snippet/70ubgiz8ftv
보존하면서 교착상태를 피할 수 있는 방법이 있나요io.pipe
?
완료되면 파이프의 쓰기 끝을 닫습니다.
으아악그렇지 않으면 독자는 무기한 기다리게 됩니다.
위 내용은 파이프 io를 기다리는 동안 교착 상태가 발생했습니다. Goroutine에서 복사의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!