Golang simple thread pool implementation
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 example
type MyTask struct { }
func (t *MyTask) Run(){
// Do your task here
}
Create instance of ThreadPool
with number of workers required and the task queue size
pool := threadpool.NewThreadPool(200,1000000)
Create Task and execute
task:=&MyTask{}
err := pool.Execute(task)
Using Callable
task
type 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()
ScheduledThreadPool
with number of workers required
schedulerPool:= threadpool.NewScheduledThreadPool(10)
task:=&MyTask{}
pool.ScheduleOnce(task, time.Second*20) // Time delay is in seconds only as of now
pool.Close()