Scalable threadpool implementation using Go to handle the huge network trafic.
go get github.com/shettyh/threadpool
-
Implement
Runnable
interface for tha task that needs to be executed. For exampletype MyTask struct { } func (t *MyTask) Run(){ // Do your task here }
-
Create instance of
ThreadPool
with number of workers required and the task queue sizepool := threadpool.NewThreadPool(200,1000000)
-
Create Task and execute
task:=&MyTask{} err := pool.Execute(task)
-
Using
Callable
tasktype MyTaskCallable struct { } func (c *MyTaskCallable) Call() interface{} { //Do task return result } //Execute callable task task := &MyTaskCallable{} future, err := pool.ExecuteFuture(task) //Check if the task is done isDone := future.IsDone() // true/false //Get response , blocking call result := future.Get()
-
Close the pool
pool.Close()
- Create instance of
ScheduledThreadPool
with number of workers requiredschedulerPool:= threadpool.NewScheduledThreadPool(10)
- Create Task and schedule
task:=&MyTask{} pool.ScheduleOnce(task, time.Second*20) // Time delay is in seconds only as of now
- Close the pool
pool.Close()