Size: a a a

2020 April 16

AK

Anton Kucherov in Go-go!
А зачем так делать? Это производительнее?
источник

а

а кто это in Go-go!
ziggy lucid
NOT от нуля разве не то же самое, что и ничего не делать?
NOT инвертировать  все биты
источник

а

а кто это in Go-go!
а они все равны нулю
источник

а

а кто это in Go-go!
Anton Kucherov
А зачем так делать? Это производительнее?
вероятно
источник

DP

Daniel Podolsky in Go-go!
Anton Kucherov
А зачем так делать? Это производительнее?
это uint, нельзя сделать Add(-1)
источник

ГК

Геннадий Ковалёв... in Go-go!
> А зачем так делать? Это производительнее?

Да, количество тактов процессора меньше, теоретически.
источник

ГК

Геннадий Ковалёв... in Go-go!
NOT - операция типа регистр-регистр, выполняется за один такт. Ну это ЕМНИП.
источник

DP

Daniel Podolsky in Go-go!
Геннадий Ковалёв
> А зачем так делать? Это производительнее?

Да, количество тактов процессора меньше, теоретически.
дело не в этом :)
источник

а

а кто это in Go-go!
Daniel Podolsky
это uint, нельзя сделать Add(-1)
источник

а

а кто это in Go-go!
но не напрямую
источник

а

а кто это in Go-go!
это видимо то же самое, но без битов
источник

DP

Daniel Podolsky in Go-go!
uint32(-1) === ^uint32(0)
источник

а

а кто это in Go-go!
да
источник

а

а кто это in Go-go!
по сути s.concurrency должно хранить количество обрабатываемых в данный момент соединений
источник

zl

ziggy lucid in Go-go!
n := atomic.AddUint32(&s.concurrency, 1)
if n > uint32(s.getConcurrency()) {
 atomic.AddUint32(&s.concurrency, ^uint32(0))
 s.writeFastError(c, StatusServiceUnavailable, "The connection cannot be served because Server.Concurrency limit exceeded")
 c.Close()
 return ErrConcurrencyLimit
}

atomic.AddInt32(&s.open, 1)

err := s.serveConn(c)

atomic.AddUint32(&s.concurrency, ^uint32(0))

вроде как при новом соединении делается инкремент s.concurrency, потом обрабатывается s.serveConn(c), потом декремент
почему у меня нулевое значение всегда возвращается?
грузил на локалхосте, может из-за этого? хотя в сотню потоков грузил
источник

а

а кто это in Go-go!
принтлн отладка
вставьте рядом с ин/декрементами принт о том что соединение закрыто
источник

DP

Daniel Podolsky in Go-go!
а обработчик достаточно длинный, чтобы можно было за ним уследить?
источник

zl

ziggy lucid in Go-go!
в 100 потоков, а Writing нулевой, это как раз  s.server.GetCurrentConcurrency()
источник

zl

ziggy lucid in Go-go!
Daniel Podolsky
а обработчик достаточно длинный, чтобы можно было за ним уследить?
не особо - 0.000235694s
источник

zl

ziggy lucid in Go-go!
но хоть что-то на нескольких миллиардах запросов должно проскочить
источник