C# Многопоточная разработка. Блокировки для профессионалов

แชร์
ฝัง
  • เผยแพร่เมื่อ 8 ก.พ. 2025

ความคิดเห็น • 26

  • @nouchance
    @nouchance 2 ปีที่แล้ว +5

    Спасибо Александр! .Про (0:51) Асинхронность и Многопоточность сделайте пожалуйста отдельное видео.Спасибо большое!

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +5

      Хорошо 😋

  • @vinogradova619
    @vinogradova619 2 ปีที่แล้ว +2

    Спасибо за интересный материал, особенно за блокировщик чтения/запись 👍

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +4

      да очень полезный блокировщик, многие не задумываются, просто lock везде делают и всё.

  • @vm7738
    @vm7738 2 ปีที่แล้ว +1

    Таймкоды:
    0:00 вступление
    0:30 2 Task'а
    2:19 оператор lock
    3:34 Monitor
    4:20 lock - один поток
    6:13 lock async
    6:49 SemaphorSlim
    8:50 lock read/write
    11:39 пример из реальной жизни про кэширование

  • @dobrinyanicitich7514
    @dobrinyanicitich7514 ปีที่แล้ว +1

    Очень интересный материал, спасибо!

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว

      всегда пожалуйста 😉

  • @puzzaro166
    @puzzaro166 2 ปีที่แล้ว +1

    Я начинающих .NET Core ( Backend) разработчик.Пока основы языка С# учу.Питаюсь понять, но для меня это уже слышком трудновато как мне кажется.Хотя смотрю ваши ролики.Спасибо вам огромное!

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +4

      Эти видео больше для мидлов. По основам советую почитать Рихтера.

    • @puzzaro166
      @puzzaro166 2 ปีที่แล้ว +1

      @@Kulibins1 Извините что беспокою вас опять.Вы имеете ввиду : Джеффри Рихтера: CLR via C# Программирование на платформе Microsoft NET Framework 4.5 на языке C#?

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +1

      @@puzzaro166 да

  • @dmitriytyurnin4605
    @dmitriytyurnin4605 2 ปีที่แล้ว +1

    Круто!

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +2

      Спасибо

  • @vladislavostapov9085
    @vladislavostapov9085 2 ปีที่แล้ว +2

    Разница между асинхронностью и многопоточностью - в асинхронной задаче во время её выполнения не происходит блокировка потока.

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +2

      не совсем так, как минимум ответ гораздо шире 😋

    • @vladislavostapov9085
      @vladislavostapov9085 2 ปีที่แล้ว +1

      @@Kulibins1 старался максимально лаконично ответить))
      Для тех кому хочется подробней - стоит Алекс дэвиса почитать

    • @Уголок78
      @Уголок78 ปีที่แล้ว

      Поправьте если ошибаюсь. Асинхронные задачи не используют сами по себе потоки в принципе.Асинхронные задачи не выполняются внутри другого потока. Они отсылают "сигнал" на уровень ОС к драйверам I/O устройств используя очередь IRP пакетов и возвращают управление вызывающему коду. Когда async задача выполнена ОС пингует код об этом и уже продолжение кода (которое идет после команды await) выполняется в потоке из пула потоков. Поэтому при отладке в теле асинхронной функции после await мы видим, что находимся в потоке "Worker Thread From Pool" или как-то так

  • @Pzqmoxwniceb
    @Pzqmoxwniceb ปีที่แล้ว +1

    Все это интересно, только не видно с телефона нифига.

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +1

      Я и так увеличил маштаб. Вероятно код очень тяжело с телефона смотреть. тут нужно другое устройство

    • @serg1778
      @serg1778 ปีที่แล้ว

      приятно когда человек действительно знает технологию,умеет ее обьяснять,и делает выжимку важных моментов а не повторяет и до того проезженные темы. @@Kulibins1

  • @jzcd
    @jzcd ปีที่แล้ว +1

    Спасибо Александр! Можно ли получить, пожалуйста, код?

    • @Kulibins1
      @Kulibins1  ปีที่แล้ว +1

      github.com/AlexanderZhelnin/lock

  • @andreyt1818
    @andreyt1818 2 ปีที่แล้ว +1

    в обертках (LockAsync и тд) не диспоузаются примитивы синхронизации. или это код очень для примера

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +1

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

  • @ПавелОкунев-м4щ
    @ПавелОкунев-м4щ 2 ปีที่แล้ว

    На моменте Task это обёртка над Thread можно выключать, если разработчик не пониманет что есть таска и что есть поток, на курсы джунов его

    • @Kulibins1
      @Kulibins1  2 ปีที่แล้ว +1

      Смотрите видео полностью, потом возмущайтесь. И да для запуска таска в другом потоке используются потоки операционной системы. Может бы вы чего-то не знаете? Или в чём смысл комментария? В общем исходный код .net он открыт, можете посмотреть что там внутри 🤣 Может быть наоборот кому-то нужно на курсы? Т.к. про task я наверное смогу больше рассказать, я им активно пользуюсь еще до того как он в Фреймворк вошёл и был дополнительной библиотекой и как бы весь его исходный код прошерстил и не раз.