diff --git a/transport/pipe/impl.go b/transport/pipe/impl.go index be69dd535..1553e2521 100644 --- a/transport/pipe/impl.go +++ b/transport/pipe/impl.go @@ -3,6 +3,7 @@ package pipe import ( "errors" "io" + "runtime" "sync" "time" @@ -125,6 +126,9 @@ func (p *pipe) WriteMultiBuffer(mb buf.MultiBuffer) error { switch { case err == nil: p.readSignal.Signal() + + // Yield current goroutine. Hopefully the reading counterpart can pick up the payload. + runtime.Gosched() return nil case err == errBufferFull && p.discardOverflow: mb.Release()