初级会员
  • 第 14885 位会员
  • wonder_wjy
  • 2017-12-15 06:34:15
  • Offline
  • 23 13

最近发布的主题

    暂无

最近发布的文章

    暂无

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • ``` package main import ( "fmt" "sync" ) const ( startNumber=1 endNumber=100 ) func main() { var mu sync.Mutex var wg sync.WaitGroup number := startNumber wg.Add(2) go func() { defer wg.Done() for { mu.Lock() if number > endNumber { mu.Unlock() break } if number%2 == 0 { fmt.Printf("goroutine 2 print %d \n", number) number++ } mu.Unlock() } }() go func() { defer wg.Done() for { mu.Lock() if number > endNumber { mu.Unlock() break } if number%2 != 0 { fmt.Printf("goroutine 1 print %d \n", number) number++ } mu.Unlock() } }() wg.Wait() } ```
  • 评论了主题 go的浅拷贝
    有可能有,即使temp:=*st复制了st的数据,因为Son是指针,所以复制的是指针,指针还是指向同一地址。
  • ch := make(chan string) go func() { ch <- "msg" }() fmt.Println(<-ch)
  • 首先三个 goruntime 0,1,2都是阻塞的,等待CHAN for i := 0; i < 2; i++ { server <- 1 } 这里会触发两个goruntime 0 和 1的程序执行,假设0优先,当0执行完后,会去写 server <- 1,那么goruntime 2会执行, 当 1 和 2执行完之后去写 server <- 1,但是这里就会阻塞了,因为没有任何去读的地方。主线程wg.Wait()也会一直阻塞,所以所有线程都是阻塞的
  • 评论了主题 这是golang的bug吗
    不是if 和 for之类的条件引起的。。而是你程序里虽然对xgg 赋了值,但是这个xgg 变量,根本就没用其他用处。也就是你不定义不赋值,对你的程序也没有任何影响。