Изучаем Go. Урок №25. Concurrency (7). Atomic

Поділитися
Вставка
  • Опубліковано 2 січ 2025

КОМЕНТАРІ • 36

  • @OdejmosO
    @OdejmosO 2 роки тому +7

    Благодарность за такую работу, очень занятно все смотреть, слушать. Кратко, по теме. Емко по информации. Спасибо огромное.

    • @thisisit7267
      @thisisit7267  2 роки тому +1

      Спасибо, стараюсь)

  • @Alesha-xi9ov
    @Alesha-xi9ov 2 роки тому +4

    Спасибо за ряд видео про конкурентность. Очень интересные и понятные уроки!

  • @mirobidobidov5776
    @mirobidobidov5776 10 місяців тому +1

    Спасибо за такое видео очень полезно

  • @spermakonya
    @spermakonya 2 роки тому +2

    Спасибо. Как раз искал информацию по поводу дата рейсов, и скорости мютексов, гугол в рекомендации тебя поставил, спасибо)

    • @thisisit7267
      @thisisit7267  2 роки тому

      Пожалуйста) Круто, не зря видос пилил)

    • @spermakonya
      @spermakonya 2 роки тому +1

      @@thisisit7267 И да, продолжай заниматься этим, ибо по гоше нету хороших гайдов на русском языке)

  • @MrTheVegol
    @MrTheVegol 9 місяців тому

    Очень долго искал нечто подобное, спасибо Автору!

  • @nikitajolobov4591
    @nikitajolobov4591 9 місяців тому

    огромное спасибо за уроки!

  • @feruzkayumov5531
    @feruzkayumov5531 Рік тому +3

    Больше уроков не будет?(

  • @andreichemeris4141
    @andreichemeris4141 2 роки тому +1

    поставил лайк, подписался

  • @ILMIX007
    @ILMIX007 Рік тому

    Спасибо за твой труд

  • @v_chelnik
    @v_chelnik 2 роки тому

    Очень грамотные видео, Спасибо тебе огромное !!

  • @andriipetko8684
    @andriipetko8684 2 роки тому +3

    Хм, запустил у себя версию с mutex и atomic - разница была, но не такая как в видео:
    0.00041 против 0.00026, а иногда при нескольких вызовах подряд значения были практически одинаковы - так как при столь маленьких значениях по времени погрешность довольно большая.
    Может конечно мьютексы "ускорили" в последних версиях гошки, не знаю

    • @КарлЛьвович-д8э
      @КарлЛьвович-д8э Рік тому +2

      схожая ситуация только у меня mutex быстрее оказался почему-то:
      Время работы atomic: 820.424µs
      Время работы mutex: 463.135µs

    • @alexanderk4481
      @alexanderk4481 Рік тому

      @@КарлЛьвович-д8э Идентично. Для того чтоб было обратно. Нужны определенные условия
      В конечном счете получается так, что в одном случае быстрее с Атомик, в другом Мутекс.
      В одном случае быстрее в Горутинах, а в других в одной на много быстрее .))))
      Такие дела )))

  • @ide9827
    @ide9827 Рік тому

    коммент для продвижения канала

  • @IvanFedulov
    @IvanFedulov Місяць тому

    эх еще бы видео про более новый atomic.Pointer и юзкейсы его использования

  • @flectere
    @flectere 5 місяців тому

    а для чего передавать i в горутину, i и так же в области видимости

  • @kotifnat
    @kotifnat 2 роки тому

    Интересный канеш цикл с CompareAndSwap) зачем делать проверку отрицания если можно проверить что вернет функция и написать в одну строку принт без return?)

  • @vendjin
    @vendjin 2 роки тому +2

    будет ли как то дальше плейлист типо rest-api?с различными вариантами авторизаций (basic, token, jwt?)

    • @thisisit7267
      @thisisit7267  2 роки тому

      Да, будет

    • @zazazzz-sz4ik
      @zazazzz-sz4ik 6 місяців тому

      ​@@thisisit7267 мы все еще ждем(

  • @Yhwach-mv9cu
    @Yhwach-mv9cu 2 роки тому +2

    Привет, скажи пожалуйста, а веб часть будет?

    • @thisisit7267
      @thisisit7267  2 роки тому +6

      Привет, да, уже скоро начнем)

    • @ruauka
      @ruauka 2 роки тому +1

      @@thisisit7267 про pprof и рефлексию уже Вы ответили, а будет ли кодогенерация?

    • @thisisit7267
      @thisisit7267  2 роки тому +1

      @@ruauka Привет. Да)

  • @spermakonya
    @spermakonya 2 роки тому

    Меня очень интересует map[string]int64, возможно ли как-то сделать чтобы атомик работал с ним? ибо мютекс не очень подходит, а информацию надо в мапе хранить.

    • @thisisit7267
      @thisisit7267  2 роки тому +2

      Привет. Пока везде при работе с мапами встречал mutex, на самом деле есть еще специальная thread-safe мапа в пакете sync, возможно стоит ее попробовать: pkg.go.dev/sync#Map

    • @spermakonya
      @spermakonya 2 роки тому +1

      @@thisisit7267 О, спасибо)

  • @AkramAzizmurodov
    @AkramAzizmurodov Рік тому

    Большое спасибо! Отлично!
    А почему ещё нет видео по REST API, JWT token, gRPC... Вы же сказали, что будет. Я всегда жду, но жаль, что автор почему-то нет.

  • @nikitaserduk1198
    @nikitaserduk1198 2 роки тому +1

    atomic.Value очень неудачный пример с числами

  • @ВикМитов
    @ВикМитов 4 місяці тому

    Не суетись при изложении

    • @IvanFedulov
      @IvanFedulov Місяць тому

      не хами учителю

  • @PimiTree
    @PimiTree 5 місяців тому

    func WriteWithAtomicValue() {
    start := time.Now()
    var counter atomic.Value
    var wg sync.WaitGroup
    counter.Store(1)
    wg.Add(1000)
    for i := 0; i < 1000; i++ {
    go func() {
    defer wg.Done()
    //time.Sleep(time.Nanosecond)
    counter.Store(counter.Load().(int) + 1)
    }()
    }
    wg.Wait()
    fmt.Printf("%T
    ", counter.Load())
    fmt.Println(counter.Load())
    fmt.Println(time.Now().Sub(start).Seconds())
    }
    Всем ку
    Почему такой вариант вызывает DataRace?

    • @andk6893
      @andk6893 4 місяці тому +1

      Вы используете две атомарные операции, загрузить, увеличиваете потом сохранить. В это время другой поток может одновременно загрузить такое же значение и записать поверх