For example,
package main
import (
"runtime"
"time"
)
var sum1 int64
func add1() {
for i := 0; i < 10000; i++ {
runtime.Gosched()
for j := 0; j < 10000; j++ {
sum1++
}
}
}
func bar() {
for {
add1()
}
}
func main() {
runtime.GOMAXPROCS(1)
go bar()
time.Sleep(1 * time.Second)
println("debug>>>")
}
https://play.golang.org/p/fD-0JG1Ow9
Peter
On Tuesday, September 5, 2017 at 1:02:59 AM UTC-4, 刘桂祥 wrote:
>
> I have a question about golang preempt schedule, here is my example code;
>
> I doubt why the bar groutine don't happen preempt schedule? (I build with
> -gcflags “-N -l” to stop func inline)
>
> More if my server with one or two cpu bound worker goroutine runing, when
> the gc need stop the world, how it can stop the worker?
>
>
> package main
>
> import “time"
>
>
> // GOMAXPROCS=1
>
> var sum1 int64
>
>
> func add1() {
>
> for i := 0; i < 10000; i++ {
>
> for j := 0; j < 10000; j++ {
>
> sum1++
>
> }
>
> }
>
> }
>
>
> func bar() {
>
> for {
>
> add1()
>
> }
>
> }
>
>
> func main() {
>
>
> go bar()
>
>
> time.Sleep(1*time.Second)
>
>
> println("debug>>>")
>
> }
>
>
>
--
You received this message because you are subscribed to the Google Groups
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.