factory
factory copied to clipboard
Go语言的协程池 , 节省内存 , 减少GC压力
line.go 31 陷入死循环,使用场景是协程池保存tsdb数据,当tsdb不可用时,报这个错误 runtime stack: runtime.throw(0x16bbd89, 0xe) /root/.gvm/gos/go1.13/src/runtime/panic.go:774 +0x72 runtime.newstack() /root/.gvm/gos/go1.13/src/runtime/stack.go:1046 +0x6e9 runtime.morestack() /root/.gvm/gos/go1.13/src/runtime/asm_amd64.s:449 +0x8f goroutine 1 [running]: runtime.heapBitsSetType(0xc0020564b0, 0x30, 0x30, 0x1583560) /root/.gvm/gos/go1.13/src/runtime/mbitmap.go:938 +0xa4e fp=0xc02763a3a8 sp=0xc02763a3a0 pc=0x42428e runtime.mallocgc(0x30, 0x1583560, 0xc02763a401,...
数组越界BUG
``` func (m *Master) AdjustSize(newSize int) { if int64(newSize) > m.maxNum { newSize = int(m.maxNum) } m.Lock() defer m.Unlock() if diff := newSize - int(m.ingNum); diff > 0 { for...
关闭风险
``` func newWorker() (w *worker) { w = &worker{ params: make(chan interface{}), } go func(w *worker) { for { if w.process() { break } atomic.StoreInt32(&w.isBusy, 0) } // 置为繁忙状态 atomic.StoreInt32(&w.isBusy,...