Go語言的協程池 , 節省內存 , 減小GC壓力git
項目地址:https://github.com/letsfire/factory.gitgithub
go get github.com/letsfire/factory
code
// 新建協程池,最大容許協程數20000和初始化數量8 // 協程工人繁忙不夠用的狀況下 , 內部實現自動擴容 // 擴容不會超過您指定的最大容許協程數量 var master = factory.NewMaster(20000, 8) // 新建第一條工做流水線 var line1 = master.AddLine("demo.line.1", func(args interface{}) { // TODO 處理您的業務邏輯 // fmt.Println(args...) }) // 新建第二條工做流水線 var line2 = master.AddLine("demo.line.2", func(args interface{}) { // TODO 處理您的業務邏輯 // fmt.Println(args...) }) // 根據業務場景將參數提交 for i := 0; i < 100000; i++ { line1.Submit(i) } for j := 0; j < 100000; j++ { line2.Submit(j) } // 協程池數量可動態調整 master.Running() // 正在運行的協程工人數量 master.AdjustSize(100) // 指定數量進行擴容或縮容 master.Shutdown() // 等於 master.AdjustSize(0)