12345678910111213141516171819202122232425262728 |
- package threading
- import (
- "github.com/tal-tech/go-zero/core/lang"
- "github.com/tal-tech/go-zero/core/rescue"
- )
- type TaskRunner struct {
- limitChan chan lang.PlaceholderType
- }
- func NewTaskRunner(concurrency int) *TaskRunner {
- return &TaskRunner{
- limitChan: make(chan lang.PlaceholderType, concurrency),
- }
- }
- func (rp *TaskRunner) Schedule(task func()) {
- rp.limitChan <- lang.Placeholder
- go func() {
- defer rescue.Recover(func() {
- <-rp.limitChan
- })
- task()
- }()
- }
|