golang多线程


gopkg.in/go-playground/pool.v3

package main

import (
	"fmt"
	"gopkg.in/go-playground/pool.v3"
	"time"
)


func newThreadFunc(p pool.Pool, value int) pool.WorkUnit {
	var fn pool.WorkFunc
	fn = func(pool.WorkUnit) (interface{}, error){
		time.Sleep(time.Second * 10)
		fmt.Println("Hello, this is %d.", value)
		return true, nil
	}
	return p.Queue(fn)
}

func main() {
	p := pool.NewLimited(5)
	defer p.Close()

	works := make([]pool.WorkUnit, 0)

	for i := 0; i < 20; i++ {
		works = append(works, newThreadFunc(p, i))
	}
	fmt.Println("Start!")
	for _, item := range works {
		item.Wait()
	}
}


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM