初级会员
  • 第 9283 位会员
  • marlonche
  • 2017-06-25 02:46:22
  • Offline
  • 41 15

最近发布的主题

最近分享的资源

    暂无

最近发布的项目

    暂无

最近的评论

  • `都是串行的处理逻辑,没有合适的位置来监听ctx.Done()。` 具体场景具体对待。难道你想有一个通用的方法,在不知道某个goroutine运行情况时让runtime把这个goroutine强制结束掉?这样恐怕你的程序就变成不可控的了,充满不确定。搬砖还是要一块块的搬
  • go的设计者认为,如果需要重入锁,就说明你的代码写的有问题: https://stackoverflow.com/questions/14670979/recursive-locking-in-go#14671462 可以将代码按照作用范围分层,金字塔形,底部是各个小函数,上层调用下层的函数,越往上作用范围越大;各层有自己的锁,并只能在本层的函数中使用:同一个锁在不同层中使用就会导致重入 go的标准库里面的做法是将需要锁住的操作独立为函数`并以Locked为后缀命名`,然后在调用这些函数的地方用锁来保护: func (b *body) Read(p []byte) (n int, err error) { b.mu.Lock() defer b.mu.Unlock() if b.closed { return 0, ErrBodyReadAfterClose } return b.readLocked(p) } // Must hold b.mu. func (b *body) readLocked(p []byte) (n int, err error) { if b.sawEOF { return 0, io.EOF } n, err = b.src.Read(p) ... } 如果一定要实现可重入锁,就必须有类似goroutine id的东西,这可能也是go的设计者不提供goroutine id的原因
  • https://cryptovest.com/news/tim-berners-lee-father-of-the-web-wants-the-internet-more-decentralized/
  • https://golang.google.cn/pkg/syscall/#GetsockoptInt https://gist.github.com/Bo0mer/2151250f2704076faa7ba250455cd376
  • 我觉得应该把用python和go发出的请求和收到的回复都打印出来:请求的header和body,回复的header和body, 然后比较两种语言发出的请求内容是否相同,回复内容是否相同, 如果完全相同,那就要通过pprof看下go的耗时在什么地方