diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/pkg/runtime/proc.c | 7 | 
1 files changed, 7 insertions, 0 deletions
| diff --git a/src/pkg/runtime/proc.c b/src/pkg/runtime/proc.c index 0a131871f3..018a453d62 100644 --- a/src/pkg/runtime/proc.c +++ b/src/pkg/runtime/proc.c @@ -875,6 +875,13 @@ handoffp(P *p)  		startm(p, false);  		return;  	} +	// If this is the last running P and nobody is polling network, +	// need to wakeup another M to poll network. +	if(runtime·sched.npidle == runtime·gomaxprocs-1 && runtime·atomicload64(&runtime·sched.lastpoll) != 0) { +		runtime·unlock(&runtime·sched); +		startm(p, false); +		return; +	}  	pidleput(p);  	runtime·unlock(&runtime·sched);  } | 
