0
채널 통신과 동시에 Reader.Read를 만들고 싶습니다. 이것은 goroutine 오버 헤드를위한 하나의 코드입니다.
type ReturnRead struct {
n int
err error
}
type ReadGoSt struct {
Returnc <-chan ReturnRead
Nextc chan struct{}
}
func (st *ReadGoSt) Close() {
defer func() {
recover()
}()
close(st.Next)
}
func ReadGo(r io.Reader, b []byte) *ReadGoSt {
returnc := make(chan ReturnRead)
nextc := make(chan bool)
go func() {
for range nextc {
n, err := r.Read(b)
returnc <- ReturnRead{n, err}
if err != nil {
return
}
}
}()
return &ReadGoSt{returnc, nextc}
}
: 2 : 그래서 그것을 실행하는 방법은 두 가지
1 만든
func ReadGo(r io.Reader, b []byte) <-chan ReturnRead {
returnc := make(chan ReturnRead)
go func() {
n, err := r.Read(b)
returnc <- ReturnRead{n, err}
}()
return returnc
}
내가 코드 2가 생성하는 생각을 너무 많은 오버 헤드가 더 나은 코드가
? 1? 2?