#21 Многопоточность - Deadlock, livelock, starvation. Ответ на вопрос собеседования C# / .Net

  Рет қаралды 5,577

Andrey Shyrokoriadov

Andrey Shyrokoriadov

Күн бұрын

Пікірлер
@firemanhood1526
@firemanhood1526 3 жыл бұрын
Топовая инфа) наконец разобрался как работает многопоточность) Спасибо!
@redice8928
@redice8928 Жыл бұрын
спасибо Андрей
@motojpeg
@motojpeg 3 жыл бұрын
Спасибо за текст к видео! Можно еще раз прочитать и понять не понятое сразу. плюсом можно сразу вставить Ваш код в студию и погонять его там в различных вариантах. Для самообучения самое то.
@Тимур-б7г1я
@Тимур-б7г1я 5 ай бұрын
Спасибо. Полезное видео и понятное объяснение) Единственное, остался вопрос: А как такие ошибки можно допустить случайно, по не опытности?) Только если у тебя совсем нет понимания, как работает хотя бы тот же локер, и что переменная для локера является общей, и только когда ты пишешь код подряд, под диктовку, особо не разбирая его и не вникая в суть. То есть для допущения подобных ошибок нужно постараться. В реальной практике конечно может быть, как из-за схожего нейминга случайно указать не тот локер, который должен занимать другой поток. Только из-за невнимательности, как мне кажется, можно такое допустить. Но всё же тема любопытная, а вот судя по описанию в начале видео на листке бумаги, starvation более чем реален и возможен, особенно если есть плохое понимание как синхронизировать потоки, как их приостанавливать, чтоб нужный поток вылез и смог обратиться к свободному общему ресурсу. Пример решения проблемы starvation я бы рассмотрел В любом случае, уроки полезные, и имеют относительно несложное объяснение, иногда всё же нужно самому додумывать, скорее догадываться, но чтоб понимать о чём речь, нужно всего лишь держать контекст объяснения в уме. Лайк, однозначно
@РНС_Саакашвили
@РНС_Саакашвили Жыл бұрын
спасибо . . . поставил лайк
@maxkrasilnik5251
@maxkrasilnik5251 3 жыл бұрын
Лучше сперва показывать код, а потом запускать программу и показывать результат. Чтобы понимать что происходит. Это я сейчас про ту часть видео, где лайв лок
@AndreyShyrokoriadov
@AndreyShyrokoriadov 3 жыл бұрын
Да, со временем я и сам пришёл к этому выводу. Например я снял два видео: шаблон «Декоратор» и принцип O SOLID. В первом видео был код и немного объяснения, а во втором видео только объяснение на основании первого видео.
@denkor.z
@denkor.z 3 жыл бұрын
Получается, dead lock отличается от live lock лишь тем, что в случае dead lock за проверку отвечает неявная имплементация работы с потоками, а во втором случае - явная проверка
@AndreyShyrokoriadov
@AndreyShyrokoriadov 3 жыл бұрын
Если мне задали бы такой вопрос на собеседовании я бы ответил что в случае dead lock работа нашего приложения останавливается и ничего не происходят - оба потока которые находятся в dead lock ожидают друг друга. С другой стороны при live lock потоки имеют возможность выполнения какой-то работы, но продвинуться дальше определенного пункта в программе они не могут. Они не могут продвинутся вперед потому что ожидают освобождения ресурсов друг друга. Я бы мог сравнить live lock с такой жизненной ситуацией. У нас есть узкий коридор по которому на встречу друг другу идут 2 человека с излишним весом (такие "боди-позитивщики" :) ). Когда они встречаются, то они не могут разминуться, но пытаются это сделать протискиваясь то влево то вправо, однако безрезультатно. Если бы у нас был бы dead lock в узком коридоре, то эти 2 "боди-позитивщика" просто стояли бы друг напротив друга и ничего бы не делали.
@MixturaLife
@MixturaLife 2 жыл бұрын
@@AndreyShyrokoriadov мне кажется, что ваш пример кода не корректен в данном случае, так как ни одна из процедур не пытается поменять свое состояние чтобы освободится от лока. То есть это тот же дедлок. Могу быть не прав, но я это так понял.
@valetra_97
@valetra_97 Жыл бұрын
@@MixturaLife думаю, что освобождение от лока не является показателем вида лока - это говорит о хорошем подходе к разработке.
@JohnDoe-uu5jy
@JohnDoe-uu5jy 3 жыл бұрын
У вас странный язык установлен в Visual Studio, похож на польский.
@AndreyShyrokoriadov
@AndreyShyrokoriadov 3 жыл бұрын
Да, это польский.
@Тимур-б7г1я
@Тимур-б7г1я 5 ай бұрын
Я думал, это испанский😀 Тоже заметил, что другой язык
@sehrgutlocj
@sehrgutlocj 8 ай бұрын
Бестолковое объяснение, бессистемная и непонятная, броски по тексту
@AndreyShyrokoriadov
@AndreyShyrokoriadov 8 ай бұрын
Хотелось бы услышать / увидеть Ваше объяснение, но я ничего не нашел 🤦‍♂️
@sehrgutlocj
@sehrgutlocj 8 ай бұрын
@@AndreyShyrokoriadov дедактики не хватает. Я не обучаю программированию
@AndreyShyrokoriadov
@AndreyShyrokoriadov 8 ай бұрын
@@sehrgutlocj у Вас в слове «Дидактика» ошибка…
@sehrgutlocj
@sehrgutlocj 8 ай бұрын
@@AndreyShyrokoriadov я малограмотный
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН
“Don’t stop the chances.”
00:44
ISSEI / いっせい
Рет қаралды 62 МЛН
When you have a very capricious child 😂😘👍
00:16
Like Asiya
Рет қаралды 18 МЛН
Deadlocks vs Livelocks - Java Concurrency - Java Brains
13:35
Java Brains
Рет қаралды 37 М.
Thread → Task. Многопоточность и Асинхронность
13:39
Архитектор ПО. Александр Желнин
Рет қаралды 33 М.
Вопросы к собеседованию C# (МНОГОПОТОЧНОСТЬ, Garbage Collector, Коллекции, Типы данных)
16:49
Александр Алексеев | Папочка Дотнета
Рет қаралды 2,4 М.
ЧТО ТАКОЕ ПОТОК? [МЬЮТЕКС, СЕМАФОР]
20:46
АйтишныйДомосед
Рет қаралды 30 М.
VIP ACCESS
00:47
Natan por Aí
Рет қаралды 30 МЛН