Rumah > Artikel > pembangunan bahagian belakang > Kongsi perpustakaan kawalan konkurensi GO yang sangat mudah digunakan!
Artikel ini akan memperkenalkan anda kepada pengetahuan yang berkaitan tentang Golang dan bercakap tentang perpustakaan kawalan serentak golang yang sangat mudah digunakan, saya harap ia akan membantu anda.
GOPROXY=https://goproxy.cn go get -v github.com/lxzan/concurrency@latest
contex.Contex
panic recover
, mengembalikan error
time.Ticker
dan channel
WaitGroup
.package mainimport ( "fmt" "github.com/lxzan/concurrency" "sync/atomic")func main() { sum := int64(0) w := concurrency.NewWorkerGroup() for i := int64(1); i <= 10; i++ { w.AddJob(concurrency.Job{ Args: i, Do: func(args interface{}) error { fmt.Printf("%v ", args) atomic.AddInt64(&sum, args.(int64)) return nil }, }) } w.StartAndWait() fmt.Printf("sum=%d\n", sum)}
4 5 6 7 8 9 10 1 3 2 sum=55
package mainimport ( "fmt" "github.com/lxzan/concurrency" "time")func Add(args interface{}) error { arr := args.([]int) ans := 0 for _, item := range arr { ans += item } fmt.Printf("args=%v, ans=%d\n", args, ans) return nil}func Mul(args interface{}) error { arr := args.([]int) ans := 1 for _, item := range arr { ans *= item } fmt.Printf("args=%v, ans=%d\n", args, ans) return nil}func main() { args1 := []int{1, 3} args2 := []int{1, 3, 5} w := concurrency.NewWorkerQueue() w.AddJob( concurrency.Job{Args: args1, Do: Add}, concurrency.Job{Args: args1, Do: Mul}, concurrency.Job{Args: args2, Do: Add}, concurrency.Job{Args: args2, Do: Mul}, ) w.StopAndWait(30*time.Second)}
args=[1 3], ans=4args=[1 3 5], ans=15args=[1 3], ans=3args=[1 3 5], ans=9
Atas ialah kandungan terperinci Kongsi perpustakaan kawalan konkurensi GO yang sangat mudah digunakan!. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!