recursive_mutex C++ | Рекурсивный мьютекс | Многопоточное программирование | C++ #9

Поделиться
HTML-код
  • Опубликовано: 14 ноя 2024

Комментарии • 68

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +29

    *Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*

  • @KK-gg8sk
    @KK-gg8sk 6 лет назад +39

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

  • @Red1ska
    @Red1ska 5 лет назад +20

    Сергей когда будет продолжение?Лайк если хочешь продолжения.

  • @SimpleCodeIT
    @SimpleCodeIT  6 лет назад +13

    #recursivemutex #многопоточность #SimpleCode #урокипрограммирования

  • @GoodDay-nd4ol
    @GoodDay-nd4ol Год назад

    Полезный урок. Спасибо за объяснения!

  • @dmitrieff_lwyr
    @dmitrieff_lwyr 6 лет назад +23

    Сергей, где новые уроки? Мы ждём

  • @ДмитрийБузницкий-б3н

    Благодарю за урок, Сергей!

  • @cppprograms5868
    @cppprograms5868 4 года назад

    Как всегда, топовые уроки. И понимание очем говорит. Спс

  • @НеизвестныйЯ-г4ь
    @НеизвестныйЯ-г4ь 6 лет назад +11

    А можно надеяться, что автор создаст уроки по шаблонам проектирования от банды четырёх?
    Синглтоны всякие и тд.
    Пробовал читать, как-то не совсем понятно. Точнее совсем непонятно.

  • @segars9604
    @segars9604 4 месяца назад

    Спасибо!)

  • @artlinestudio6735
    @artlinestudio6735 3 года назад

    Очень интересный и полезный урок! Спасибо Сергей!

  • @ИльяЯкобсон-ю7ж
    @ИльяЯкобсон-ю7ж 4 года назад

    Красиво=) Спасибо за шикарный пример!

  • @FuLLHD17395
    @FuLLHD17395 6 лет назад +4

    Сергей , обожаю Ваши уроки. Я еще давно писал несколько раз в коментариях свои эмоции по поводу Вашего канала, и эмоции все так же очень очень положительные! С помощью Ваших уроков я смог с нуля поднятся до такого уровня, до которого бы сам я добирался тысячу лет :D
    И мне очень интересно пара моментов: будете ли Вы разбирать библиотеку BOOST? И стоит ли вообще на ней останавливаться лично, если Вы не будете её разбирать?
    Просто в интернете мало инфы по поводу неё и поэтому надеюсь, что всё таки сделаете серию уроков, хотя бы базовую :)
    И второй момент, будут ли уроки по SQL? Начиная с "какой софт установить". Думаю, они бы зашли прям вообще на УРА. :3
    Еще раз спасибо!

  • @hutoryanin
    @hutoryanin 3 года назад

    *Л. а. й. к. о. с.* за видос

  • @Holling_Woodwood
    @Holling_Woodwood 5 лет назад +1

    Хорошие уроки. Было бы здорово, если бы вы сделали урок еще об условных переменных (std::condition_variable) в С++ при многопоточном программировании.

    • @cppprograms5868
      @cppprograms5868 4 года назад

      Да, условные переменные это жесть

  • @Ermine882
    @Ermine882 6 лет назад +2

    Спасибо за урок.

  • @kazikhangereykhanov7758
    @kazikhangereykhanov7758 6 лет назад +3

    Благодарю Сергей)
    Топчик 👍

  • @andreyzavalishchev4818
    @andreyzavalishchev4818 6 лет назад +2

    Спасибо за урок!

  • @angelpensive9145
    @angelpensive9145 5 лет назад +3

    В linux, если ты залочишь подобным образом, cout выведет только по завешению потока весь накопленый результат.

    • @antont7478
      @antont7478 2 года назад +1

      у меня такая же история

  • @postdisc0
    @postdisc0 Год назад +2

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

  • @mattewfishbourne632
    @mattewfishbourne632 6 лет назад +11

    Спасибо!
    Заметил только, что в списке хоть и написано 202 видео в плейлисте, отображается только первые 200 :)

    • @SimpleCodeIT
      @SimpleCodeIT  6 лет назад

      Есть такая проблема, но это youtube ничего не поделаешь.

  • @SergeySuper_Silver
    @SergeySuper_Silver 10 месяцев назад +1

    Чтобы понять рекурсию, нужно сначала понять рекурсию)😀

  • @mrkanalias
    @mrkanalias 6 лет назад +6

    Доброго времени суток, интересует такой вопрос: "Будет ли рассмотрение сигналов и семафоров и типовых задач вроде или одной из них "задача об обедающих философов", "проблема читателей-писателей", "проблема курильщиков" и так далее?".

    • @threedking
      @threedking 5 лет назад +1

      Где вы взяли список этих задач?

    • @Tyr4noBuba
      @Tyr4noBuba 2 года назад

      @@threedking проблема курильщиков на него повлияла

    • @postdisc0
      @postdisc0 Год назад

      @@threedking классические задачи по многопоточности же

  • @MrHazur
    @MrHazur 6 лет назад +2

    Спасибо за уроки. Хотел бы попросить создать нескольколько уроков по созданию исполняемой dll и библиотеку классов/методов. И подключеню в свой проэкт. В интернете както все сухо и хлуго по этому поводу.

  • @mykhailomorhal2181
    @mykhailomorhal2181 6 лет назад

    Спасибо , Лайк)

  • @outcast-cr5yy
    @outcast-cr5yy 6 лет назад +2

    Спасибо

  • @johnproskurnin8214
    @johnproskurnin8214 6 лет назад

    спасибо

  • @iPhoneAze
    @iPhoneAze 4 года назад

    Сними еще видео, мы ждем!

  • @nictrace
    @nictrace 5 лет назад +2

    То есть, получается, что единожды залочивший rm поток может лочить его сколько нужно раз, а другой поток не может ни разу?

  • @PanVladyslav
    @PanVladyslav 6 лет назад +2

    спасибо))

  • @Владимир-ч5м1л
    @Владимир-ч5м1л 3 месяца назад

    Рекурсивный мьютекс это то же самое, что семафор?

  • @dennisparabola732
    @dennisparabola732 2 года назад +2

    А почему нельзя обычный мьютекс разблочить перед вызовом функции, а не после нее, вроде бы все также корректно отрабатывает

    • @СергейДорожкин-ю6п
      @СергейДорожкин-ю6п 2 года назад +2

      Потому что второй поток может успеть занять полностью разлоченный мьютекс и влезть в вывод. И так дальше до самого конца - кто кого перегонит после разлока перед вызовом новой функции.
      Если же поставить разлок в конце, то все разлоки произойдут по сути друг за другом, и только тогда второй поток сможет занять мьютекс

  • @Chaos_Throne
    @Chaos_Throne 4 месяца назад

    Вот чего не понял. Получается, при использовании рекурсивных мьютексов вся многопоточность теряется (плюс накладные расходы на создание потоков), ведь Foo() вызывается последовательно. Тогда зачем они нужны? Или это просто именно этот пример написан так, что все последовательно? Есть пример, когда рекурсивные функции могут работать параллельно?

  • @wldzam
    @wldzam 3 года назад +1

    thanks

  • @МихаилТараканов-в9р
    @МихаилТараканов-в9р 4 года назад +1

    Не знаю писали ли кто то уже или нет. Можно упростить код с помощью
    lock_guard lg(rm); // В 17 стандарте тип мьютекса сам задедьюсится
    И не нужны будут оба вызова unlock

  • @dukenukem1675
    @dukenukem1675 2 года назад

    а вот если функция используется для инициализации, не рекурсия, каждый поток создает свой стек для этой функции? ну то-есть образно: в первом потоке данные переменных внутри функции не пересекаются ли с данными аналогичных переменных аналогичной функции из второго потока? можно же одной функцией и несколькими потоками инициализировать разные библиотеки к которым будет обращаться майн поток в дальнейшем, у которых одинаковые поля но разное количество элементов?

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 года назад

      ну как, разобрался?

    • @dukenukem1675
      @dukenukem1675 2 года назад

      @@ДмитрийНормов-ю6ц работаю над этим=) но пока не понятно, тут сложность в том что такого рода инфа только в тех бумажках=)
      _____________________________________________________________________
      ну тоесть по опыту который сейчас проработал:
      действительно не пересекаются.
      _____________________________________________________________________
      каждая сущность описанная в классе и используемая в объекте будь то функция или переменная или мьютекс работают внутри этого обьекта, тупо область видимости=) следовательно выполняются при любом раскладе парралельно.
      ______________________________________________________________________
      вот если сделать глобальный мьютекс или даже статичный мьютекс внутри класса для его обьекта, то тогда работать это будет уже как с блокировкой для отдельных потоков потому как они будут все использоать именно статический либо глобальный мьютекс.
      _______________________________________________________________________
      ну опять же если праильно понимаю=)
      однако с работой статических функций и объединением потоков после обьявления потока в конструкторе либо функции класса пока что не разобрался до конца=)

    • @dukenukem1675
      @dukenukem1675 2 года назад

      @@ДмитрийНормов-ю6ц опять же как работают потоки параллельно в своих функциях для инициализации трудно пока понять, исходя из строения и работы с потоками ОСей, вроде как планировщик может что либо выдернуть из потока тупо переопределив очередь, и вот как на этом уровне все взаимодействует не знаю, надо подтягивать знания. вроде как проблема то решена но хз, можно ли быть уверенным в этом. или по процессам и потокам внутри оси вообще запариваться не надо? слишком низкий уровень? так то в теории если написать одну функцию чтобы она инициализировала данные из файла в оперативу, допустим в динамический массив, конечно предворительно рассчитав размер, то эту функцию может использовать любой поток созданный для инициализации и помешать друг другу они не могут и данные вроде как защищены
      но опять же хз=(

  • @trial_bot
    @trial_bot 6 лет назад

    Как скоро будет новый урок?

  • @nahidwininyourdomain
    @nahidwininyourdomain 2 года назад

    Дякую

  • @PanVladyslav
    @PanVladyslav 6 лет назад

    такой вопрос , ранее ты говорил что сколько lock поставил , столько and unlock должно быть , почему тогда у тебя 1 lock и 2 unlock ??

    • @SimpleCodeIT
      @SimpleCodeIT  6 лет назад +1

      В примере из урока lock и unlock будет вызываться одинаковое количество раз, в уроке я объяснял почему.

    • @postdisc0
      @postdisc0 Год назад

      потому что рекурсия

  • @coolguy730
    @coolguy730 6 лет назад +1

    👍👍👍👍👍

  • @2b1aa1
    @2b1aa1 3 года назад

    что-то я не понял почему 2 лока и прога вылетает. должно же быть подругому. оно должно чтото типа deadlock быть.

    • @martmishka
      @martmishka 2 года назад

      так ведь mutex один и тот же. 2-ой поток просто видит, что mutex уже занят и ждет, пока он не освободится, а потом сам его занимает. deadlock возможен при двух и более mutex-ах

  • @dukenukem1675
    @dukenukem1675 2 года назад

    прошу прощения за то что не в той теме, просто что то вопрос появился.

  • @grenadier1653
    @grenadier1653 6 лет назад

    Будь добр, скажи, а ты кто по профессии?

  • @DanilGiniiatullin
    @DanilGiniiatullin 6 лет назад +2

    Спросить хотел. Те, кто до этого урока добрался, чисто по видосам из ютуба что-то годное писать можете? Отпишите пж

    • @DanilGiniiatullin
      @DanilGiniiatullin 6 лет назад

      Данил Лафин шифровка морзе это не совсем то, про что я говорил) я имею ввиду какие-то проекты, годные софты

    • @DanilGiniiatullin
      @DanilGiniiatullin 6 лет назад +2

      Данил Лафин не, это бред. Я более чем дохрена проектов на плюсах видел. На плюсах можно почти все писать на сколько я знаю

    • @ДмитрийНормов-ю6ц
      @ДмитрийНормов-ю6ц 2 года назад

      @Муген ты прям все сам пишешь? Или рыбу ищешь на ютубе и переделываешь под свои хотелки?

  • @Antonov_Ivan.
    @Antonov_Ivan. 6 месяцев назад

    Спасибо за урок!

  • @pavelios3577
    @pavelios3577 5 лет назад +1

    Спасибо за урок.

  • @ЯрославГоловко-ф6и
    @ЯрославГоловко-ф6и 4 года назад

    спасибо

  • @DD0S2
    @DD0S2 3 года назад

    спасибо