cubefs

Форк
0
37 строк · 667.0 Байт
1
package hystrix
2

3
type executorPool struct {
4
	Name    string
5
	Metrics *poolMetrics
6
	Max     int
7
	Tickets chan *struct{}
8
}
9

10
func newExecutorPool(name string) *executorPool {
11
	p := &executorPool{}
12
	p.Name = name
13
	p.Metrics = newPoolMetrics(name)
14
	p.Max = getSettings(name).MaxConcurrentRequests
15

16
	p.Tickets = make(chan *struct{}, p.Max)
17
	for i := 0; i < p.Max; i++ {
18
		p.Tickets <- &struct{}{}
19
	}
20

21
	return p
22
}
23

24
func (p *executorPool) Return(ticket *struct{}) {
25
	if ticket == nil {
26
		return
27
	}
28

29
	p.Metrics.Updates <- poolMetricsUpdate{
30
		activeCount: p.ActiveCount(),
31
	}
32
	p.Tickets <- ticket
33
}
34

35
func (p *executorPool) ActiveCount() int {
36
	return p.Max - len(p.Tickets)
37
}
38

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.