А можно надеяться, что автор создаст уроки по шаблонам проектирования от банды четырёх? Синглтоны всякие и тд. Пробовал читать, как-то не совсем понятно. Точнее совсем непонятно.
Сергей , обожаю Ваши уроки. Я еще давно писал несколько раз в коментариях свои эмоции по поводу Вашего канала, и эмоции все так же очень очень положительные! С помощью Ваших уроков я смог с нуля поднятся до такого уровня, до которого бы сам я добирался тысячу лет :D И мне очень интересно пара моментов: будете ли Вы разбирать библиотеку BOOST? И стоит ли вообще на ней останавливаться лично, если Вы не будете её разбирать? Просто в интернете мало инфы по поводу неё и поэтому надеюсь, что всё таки сделаете серию уроков, хотя бы базовую :) И второй момент, будут ли уроки по SQL? Начиная с "какой софт установить". Думаю, они бы зашли прям вообще на УРА. :3 Еще раз спасибо!
если коротко то рекурсивный мьютекс нужен для рекурсивных функций, получается. что логично не только по названию UPD: сорри была неправа, необязательно рекурсивных, а просто там где нужно навешивать его много раз подряд. убедилась на практике
Доброго времени суток, интересует такой вопрос: "Будет ли рассмотрение сигналов и семафоров и типовых задач вроде или одной из них "задача об обедающих философов", "проблема читателей-писателей", "проблема курильщиков" и так далее?".
Спасибо за уроки. Хотел бы попросить создать нескольколько уроков по созданию исполняемой dll и библиотеку классов/методов. И подключеню в свой проэкт. В интернете както все сухо и хлуго по этому поводу.
Потому что второй поток может успеть занять полностью разлоченный мьютекс и влезть в вывод. И так дальше до самого конца - кто кого перегонит после разлока перед вызовом новой функции. Если же поставить разлок в конце, то все разлоки произойдут по сути друг за другом, и только тогда второй поток сможет занять мьютекс
Вот чего не понял. Получается, при использовании рекурсивных мьютексов вся многопоточность теряется (плюс накладные расходы на создание потоков), ведь Foo() вызывается последовательно. Тогда зачем они нужны? Или это просто именно этот пример написан так, что все последовательно? Есть пример, когда рекурсивные функции могут работать параллельно?
Не знаю писали ли кто то уже или нет. Можно упростить код с помощью lock_guard lg(rm); // В 17 стандарте тип мьютекса сам задедьюсится И не нужны будут оба вызова unlock
а вот если функция используется для инициализации, не рекурсия, каждый поток создает свой стек для этой функции? ну то-есть образно: в первом потоке данные переменных внутри функции не пересекаются ли с данными аналогичных переменных аналогичной функции из второго потока? можно же одной функцией и несколькими потоками инициализировать разные библиотеки к которым будет обращаться майн поток в дальнейшем, у которых одинаковые поля но разное количество элементов?
@@ДмитрийНормов-ю6ц работаю над этим=) но пока не понятно, тут сложность в том что такого рода инфа только в тех бумажках=) _____________________________________________________________________ ну тоесть по опыту который сейчас проработал: действительно не пересекаются. _____________________________________________________________________ каждая сущность описанная в классе и используемая в объекте будь то функция или переменная или мьютекс работают внутри этого обьекта, тупо область видимости=) следовательно выполняются при любом раскладе парралельно. ______________________________________________________________________ вот если сделать глобальный мьютекс или даже статичный мьютекс внутри класса для его обьекта, то тогда работать это будет уже как с блокировкой для отдельных потоков потому как они будут все использоать именно статический либо глобальный мьютекс. _______________________________________________________________________ ну опять же если праильно понимаю=) однако с работой статических функций и объединением потоков после обьявления потока в конструкторе либо функции класса пока что не разобрался до конца=)
@@ДмитрийНормов-ю6ц опять же как работают потоки параллельно в своих функциях для инициализации трудно пока понять, исходя из строения и работы с потоками ОСей, вроде как планировщик может что либо выдернуть из потока тупо переопределив очередь, и вот как на этом уровне все взаимодействует не знаю, надо подтягивать знания. вроде как проблема то решена но хз, можно ли быть уверенным в этом. или по процессам и потокам внутри оси вообще запариваться не надо? слишком низкий уровень? так то в теории если написать одну функцию чтобы она инициализировала данные из файла в оперативу, допустим в динамический массив, конечно предворительно рассчитав размер, то эту функцию может использовать любой поток созданный для инициализации и помешать друг другу они не могут и данные вроде как защищены но опять же хз=(
так ведь mutex один и тот же. 2-ой поток просто видит, что mutex уже занят и ждет, пока он не освободится, а потом сам его занимает. deadlock возможен при двух и более mutex-ах
*Cамый лучший способ сказать "спасибо" - поставить лайк и и поделиться уроком с друзьями. Это очень мотивирует создавать полезные уроки =)*
Объясняешь сложные вещи простым языком ( а этого не хватает преподам из универа), с меня лайк, с тебя новые видео)
Сергей когда будет продолжение?Лайк если хочешь продолжения.
#recursivemutex #многопоточность #SimpleCode #урокипрограммирования
Полезный урок. Спасибо за объяснения!
Сергей, где новые уроки? Мы ждём
Благодарю за урок, Сергей!
Как всегда, топовые уроки. И понимание очем говорит. Спс
А можно надеяться, что автор создаст уроки по шаблонам проектирования от банды четырёх?
Синглтоны всякие и тд.
Пробовал читать, как-то не совсем понятно. Точнее совсем непонятно.
Спасибо!)
Очень интересный и полезный урок! Спасибо Сергей!
Красиво=) Спасибо за шикарный пример!
Сергей , обожаю Ваши уроки. Я еще давно писал несколько раз в коментариях свои эмоции по поводу Вашего канала, и эмоции все так же очень очень положительные! С помощью Ваших уроков я смог с нуля поднятся до такого уровня, до которого бы сам я добирался тысячу лет :D
И мне очень интересно пара моментов: будете ли Вы разбирать библиотеку BOOST? И стоит ли вообще на ней останавливаться лично, если Вы не будете её разбирать?
Просто в интернете мало инфы по поводу неё и поэтому надеюсь, что всё таки сделаете серию уроков, хотя бы базовую :)
И второй момент, будут ли уроки по SQL? Начиная с "какой софт установить". Думаю, они бы зашли прям вообще на УРА. :3
Еще раз спасибо!
*Л. а. й. к. о. с.* за видос
Хорошие уроки. Было бы здорово, если бы вы сделали урок еще об условных переменных (std::condition_variable) в С++ при многопоточном программировании.
Да, условные переменные это жесть
Спасибо за урок.
Благодарю Сергей)
Топчик 👍
Спасибо за урок!
В linux, если ты залочишь подобным образом, cout выведет только по завешению потока весь накопленый результат.
у меня такая же история
если коротко то рекурсивный мьютекс нужен для рекурсивных функций, получается. что логично не только по названию
UPD: сорри была неправа, необязательно рекурсивных, а просто там где нужно навешивать его много раз подряд. убедилась на практике
Спасибо!
Заметил только, что в списке хоть и написано 202 видео в плейлисте, отображается только первые 200 :)
Есть такая проблема, но это youtube ничего не поделаешь.
Чтобы понять рекурсию, нужно сначала понять рекурсию)😀
Доброго времени суток, интересует такой вопрос: "Будет ли рассмотрение сигналов и семафоров и типовых задач вроде или одной из них "задача об обедающих философов", "проблема читателей-писателей", "проблема курильщиков" и так далее?".
Где вы взяли список этих задач?
@@threedking проблема курильщиков на него повлияла
@@threedking классические задачи по многопоточности же
Спасибо за уроки. Хотел бы попросить создать нескольколько уроков по созданию исполняемой dll и библиотеку классов/методов. И подключеню в свой проэкт. В интернете както все сухо и хлуго по этому поводу.
Спасибо , Лайк)
Спасибо
спасибо
Сними еще видео, мы ждем!
То есть, получается, что единожды залочивший rm поток может лочить его сколько нужно раз, а другой поток не может ни разу?
спасибо))
Рекурсивный мьютекс это то же самое, что семафор?
А почему нельзя обычный мьютекс разблочить перед вызовом функции, а не после нее, вроде бы все также корректно отрабатывает
Потому что второй поток может успеть занять полностью разлоченный мьютекс и влезть в вывод. И так дальше до самого конца - кто кого перегонит после разлока перед вызовом новой функции.
Если же поставить разлок в конце, то все разлоки произойдут по сути друг за другом, и только тогда второй поток сможет занять мьютекс
Вот чего не понял. Получается, при использовании рекурсивных мьютексов вся многопоточность теряется (плюс накладные расходы на создание потоков), ведь Foo() вызывается последовательно. Тогда зачем они нужны? Или это просто именно этот пример написан так, что все последовательно? Есть пример, когда рекурсивные функции могут работать параллельно?
thanks
Не знаю писали ли кто то уже или нет. Можно упростить код с помощью
lock_guard lg(rm); // В 17 стандарте тип мьютекса сам задедьюсится
И не нужны будут оба вызова unlock
Хорошее замечание, спасибо.
точнее lock_guard lg(rm);
а вот если функция используется для инициализации, не рекурсия, каждый поток создает свой стек для этой функции? ну то-есть образно: в первом потоке данные переменных внутри функции не пересекаются ли с данными аналогичных переменных аналогичной функции из второго потока? можно же одной функцией и несколькими потоками инициализировать разные библиотеки к которым будет обращаться майн поток в дальнейшем, у которых одинаковые поля но разное количество элементов?
ну как, разобрался?
@@ДмитрийНормов-ю6ц работаю над этим=) но пока не понятно, тут сложность в том что такого рода инфа только в тех бумажках=)
_____________________________________________________________________
ну тоесть по опыту который сейчас проработал:
действительно не пересекаются.
_____________________________________________________________________
каждая сущность описанная в классе и используемая в объекте будь то функция или переменная или мьютекс работают внутри этого обьекта, тупо область видимости=) следовательно выполняются при любом раскладе парралельно.
______________________________________________________________________
вот если сделать глобальный мьютекс или даже статичный мьютекс внутри класса для его обьекта, то тогда работать это будет уже как с блокировкой для отдельных потоков потому как они будут все использоать именно статический либо глобальный мьютекс.
_______________________________________________________________________
ну опять же если праильно понимаю=)
однако с работой статических функций и объединением потоков после обьявления потока в конструкторе либо функции класса пока что не разобрался до конца=)
@@ДмитрийНормов-ю6ц опять же как работают потоки параллельно в своих функциях для инициализации трудно пока понять, исходя из строения и работы с потоками ОСей, вроде как планировщик может что либо выдернуть из потока тупо переопределив очередь, и вот как на этом уровне все взаимодействует не знаю, надо подтягивать знания. вроде как проблема то решена но хз, можно ли быть уверенным в этом. или по процессам и потокам внутри оси вообще запариваться не надо? слишком низкий уровень? так то в теории если написать одну функцию чтобы она инициализировала данные из файла в оперативу, допустим в динамический массив, конечно предворительно рассчитав размер, то эту функцию может использовать любой поток созданный для инициализации и помешать друг другу они не могут и данные вроде как защищены
но опять же хз=(
Как скоро будет новый урок?
Дякую
такой вопрос , ранее ты говорил что сколько lock поставил , столько and unlock должно быть , почему тогда у тебя 1 lock и 2 unlock ??
В примере из урока lock и unlock будет вызываться одинаковое количество раз, в уроке я объяснял почему.
потому что рекурсия
👍👍👍👍👍
что-то я не понял почему 2 лока и прога вылетает. должно же быть подругому. оно должно чтото типа deadlock быть.
так ведь mutex один и тот же. 2-ой поток просто видит, что mutex уже занят и ждет, пока он не освободится, а потом сам его занимает. deadlock возможен при двух и более mutex-ах
прошу прощения за то что не в той теме, просто что то вопрос появился.
Будь добр, скажи, а ты кто по профессии?
Спросить хотел. Те, кто до этого урока добрался, чисто по видосам из ютуба что-то годное писать можете? Отпишите пж
Данил Лафин шифровка морзе это не совсем то, про что я говорил) я имею ввиду какие-то проекты, годные софты
Данил Лафин не, это бред. Я более чем дохрена проектов на плюсах видел. На плюсах можно почти все писать на сколько я знаю
@Муген ты прям все сам пишешь? Или рыбу ищешь на ютубе и переделываешь под свои хотелки?
Спасибо за урок!
Спасибо за урок.
спасибо
спасибо