晚上花时间研究了下go线程池,首先向下面这位大拿表示感谢!!!获益良多
go线程池实现百万级高并发_jkwanga的博客-CSDN博客_go 线程池
之前一直用python3的线程池,模仿那个写了一段
type ThreadPool2 struct {
JobQueue chan interface{}
QuitFlag chan bool
MaxThread int
waitGroup sync.WaitGroup
}
func NewThreadPool2(InMaxThread int) *ThreadPool2 {
return &ThreadPool2{
JobQueue: make(chan interface{}),
QuitFlag: make(chan bool),
MaxThread: InMaxThread,
waitGroup: sync.WaitGroup{},
}
}
func (this *ThreadPool2) Run(FuncRun func(interface{}), InArrObj []interface{}) {
//启动子线程
for i := 1; i <= this.MaxThread; i++ {
this.waitGroup.Add(1)
go func() {
defer func() {
this.waitGroup.Done()
}()
func_for:
for {
select {
case TmpJob := <-this.JobQueue:
defer func() {
if err := recover(); err != nil {