1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-06-10 09:50:43 +00:00

yield goroutine on pipe write

This commit is contained in:
Darien Raymond 2018-11-11 18:58:58 +01:00
parent 3f3d00298a
commit 956868ef78
No known key found for this signature in database
GPG Key ID: 7251FFA14BB18169

View File

@ -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()