Skip to content

Commit

Permalink
update example and readme
Browse files Browse the repository at this point in the history
  • Loading branch information
panjf2000 committed May 26, 2018
1 parent 4b806f4 commit dbc39db
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 30 deletions.
49 changes: 41 additions & 8 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,33 +35,66 @@ glide get github.com/panjf2000/ants
If your program will generate a massive number of goroutines and you don't want them to consume a vast amount of memory, with ants, all you need to do is to import ants package and submit all your tasks to the default limited pool created when ants was imported:

``` go

package main

import (
"fmt"
"github.com/panjf2000/ants"
"sync"
"sync/atomic"

"github.com/panjf2000/ants"
"time"
)

func myFunc() {
var sum int32

func myFunc(i interface{}) error {
n := i.(int)
atomic.AddInt32(&sum, int32(n))
fmt.Printf("run with %d\n", n)
return nil
}

func demoFunc() error {
time.Sleep(10 * time.Millisecond)
fmt.Println("Hello World!")
return nil
}

func main() {
runTimes := 10000
runTimes := 1000

// use the common pool
var wg sync.WaitGroup
// submit all your tasks to ants pool
for i := 0; i < runTimes; i++ {
wg.Add(1)
ants.Push(func() {
myFunc()
ants.Submit(func() error {
demoFunc()
wg.Done()
return nil
})
}
wg.Wait()
fmt.Println("finish all tasks!")
fmt.Printf("running goroutines: %d\n", ants.Running())
fmt.Printf("finish all tasks.\n")

// use the pool with a function
// set 10 the size of goroutine pool
p, _ := ants.NewPoolWithFunc(10, func(i interface{}) error {
myFunc(i)
wg.Done()
return nil
})
// submit tasks
for i := 0; i < runTimes; i++ {
wg.Add(1)
p.Serve(i)
}
wg.Wait()
fmt.Printf("running goroutines: %d\n", p.Running())
fmt.Printf("finish all tasks, result is %d\n", sum)
}

```

## Submit tasks
Expand Down
44 changes: 22 additions & 22 deletions examples/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ import (
"sync/atomic"

"github.com/panjf2000/ants"
"time"
)

var sum int32
Expand All @@ -39,43 +40,42 @@ func myFunc(i interface{}) error {
return nil
}

// func main() {
// runTimes := 10000
// var wg sync.WaitGroup
// // submit all your tasks to ants pool
// for i := 0; i < runTimes; i++ {
// wg.Add(1)
// ants.Submit(func() {
// myFunc()
// wg.Done()
// })
// }
// wg.Wait()
// fmt.Println("finish all tasks!")
// }
func demoFunc() error {
time.Sleep(10 * time.Millisecond)
fmt.Println("Hello World!")
return nil
}

func main() {
runTimes := 1000

// set 100 the size of goroutine pool

// use the common pool
var wg sync.WaitGroup
for i := 0; i < runTimes; i++ {
wg.Add(1)
ants.Submit(func() error {
demoFunc()
wg.Done()
return nil
})
}
wg.Wait()
fmt.Printf("running goroutines: %d\n", ants.Running())
fmt.Printf("finish all tasks.\n")

// use the pool with a function
// set 10 the size of goroutine pool
p, _ := ants.NewPoolWithFunc(10, func(i interface{}) error {
myFunc(i)
wg.Done()
return nil
})
// submit
// submit tasks
for i := 0; i < runTimes; i++ {
wg.Add(1)
p.Serve(i)
}
wg.Wait()
//var m int
//var i int
//for n := range sum {
// m += n
//}
fmt.Printf("running goroutines: %d\n", p.Running())
fmt.Printf("finish all tasks, result is %d\n", sum)
}

0 comments on commit dbc39db

Please sign in to comment.