Comments 4
if atomic.LoadInt32(&mp.currentAlloc) < mp.maxSize {
newID := int(atomic.AddInt32(&mp.currentAlloc, 1))Кажется здесь баг... в конкурентном вызове под интенсивной нагрузкой в Get получим выход за пределы maxSize
Да классический race condition. Также коробит от логирования в примерах. Которое убьет всю (и так неочевидную ) пользу от использования пулов
Ну тут неудивительно учитывая источник «статьи». И потом люди после таких вот курсов просто увеличивают нагрузку на найм.
Несколько data race, не нужный двойной select в Get, побайтное заполнение буфера нулями в цикле, потенциально багоемкий make слайса с len=cap... В статьях хочется видеть хороший код, а тут что-то уровня мидла с ошибками :(
Sign up to leave a comment.
Кастомные memory pools в Golang