Программирование на C#. Многопоточность

  Рет қаралды 8,701

ML START

ML START

4 жыл бұрын

На вебинаре:
• научимся создавать потоки.
• узнаем, как работает синхронизации потоков.
• научимся работать с потоками контролов.
• поговорим об асинхронном программировании.
Домашнее задание: docs.google.com/document/d/1g...
ml_start
t.me/MS_ML_START

Пікірлер: 22
@mlstart3006
@mlstart3006 3 жыл бұрын
0:14 - Создание и запуск потока. Свойства потока 3:09 - Отладка многопоточного приложения 6:42 - Пул потоков. Зачем он нужен. Использование 9:10 - Написание собственного пула потоков 12:38 - Проблемы синхронизации потоков. Атомарные и не атомарные операции 18:29 - Другие примитивы синхронизации. Понятие критической секции 26:39 - Оптимизация производительности 32:30 - Корректное закрытие потоков 40:05 - Прочие примитивы синхронизации. Мьютексы, семафоры, события 48:40 - Межпроцессная синхронизация при помощи Mutex. Создание Single Instance приложения 52:00 - Многопоточность и GUI. Понятие контекста синхронизации 59:26 - Потокобезопасные контейнеры 1:08:45 - Асинхронное программирование. Развитие подходов 1:14:12 - Класс Task. Паттерн async/await 1:20:37 - Async/await и WinForms 1:27:54 - Кое-что о внутреннем устройстве async/await 1:29:35 - Полезные методы для работы с Task 1:36:02 - Отмена операций. CancellationToken
@aidarfachrutdinov
@aidarfachrutdinov 3 жыл бұрын
Отлично!
@petrkassadinovich2705
@petrkassadinovich2705 3 ай бұрын
Как по мне - лучший ваш семинарист. Четко, без воды, с детальным объяснением.
@user-bn5pp4vf6z
@user-bn5pp4vf6z Жыл бұрын
Лучше объяснение многопоточности и асинхронности на просторах интернета. Большое спасибо автору!
@user-bi1ll1wy2m
@user-bi1ll1wy2m 3 жыл бұрын
Наконец-то среди Ютуба нашлось грамотное объяснение на высочайшем уровне!
@jaimeasm5527
@jaimeasm5527 2 жыл бұрын
Великолепное объяснение. Где бы ещё посмотреть лекции с этим преподавателем.
@xelaksal6690
@xelaksal6690 2 жыл бұрын
Супер последовательное и лаконичное обьяснение, гигантское спасибо автору!
@user-xj7te3qs8u
@user-xj7te3qs8u 9 ай бұрын
Вау. Быстро, четко, по полкам. Скорость реально бимба ❤
@dunno851
@dunno851 8 ай бұрын
Объяснение прекрасное. Спасибо большое:)
@user-ql2ff4mv6k
@user-ql2ff4mv6k 4 жыл бұрын
Браво...
@sergvlasov6776
@sergvlasov6776 3 жыл бұрын
Качественно!
@muhammadahmadov6014
@muhammadahmadov6014 8 ай бұрын
Здравствуйте , а есть у данного преподавателя свой отдельный канал ? Очень понравилась подача преподавателя , а так же уровень и глубина знаний
@user-ix4cm7ch5z
@user-ix4cm7ch5z 8 ай бұрын
спасибо обязательно посмотрю и пересмотрю
@petrkassadinovich2705
@petrkassadinovich2705 3 ай бұрын
32:25 Понимаю, что это реализовали для примера, просто хочу понять, правильно ли распознал возможную проблему. При добавлении экшена в пул есть следующий фрагмент: if (_action.Count == 1) { Monitor.Pulse(_syncRoot); } Получается, что будится один поток и только тогда, когда количество задач строго 1. Но, что если задач будет добавлено много, допустим 30, прежде чем они будут разобраны. Тогда мы разбудим лишь один поток, которому и придется разбирать оставшиеся экшены, в то время как остальные потоки будут спать... То есть, с самого начала, как все потоки уснули, наш тред пулл всегда будет оперировать лишь одним потоком. Возможное решение: Вместо блока с _action.Count == 1, будим потоки циклом, в количестве МИНИМАЛЬНОЕ(кол_спящих_потоков, кол_экшенов). Жизнеспособный ли это вариант?
@timur2887
@timur2887 2 ай бұрын
Там идея обработки случая, когда добавляется первое действие, потому что только в этом случае все потоки спят, если действие не первое, то будить не надо, т.к. идет работа с очередью и есть как минимум один неспящий поток
@timur2887
@timur2887 2 ай бұрын
А как же SpinLock, Barrier?
@kyk0_924
@kyk0_924 6 ай бұрын
после слов атомарная операция, меня бросило в холодный пот))
@user-sy9sg2fv6k
@user-sy9sg2fv6k 2 жыл бұрын
Добрый день, а подскажите новичку, как лучше тогда останавливать поток, либо ставить на паузу? Если не через Thread.Abort()
@user-ow1sd5mt6y
@user-ow1sd5mt6y 8 ай бұрын
Thread.Sleep. А вырубать поток, как я понял не очень хорошая практика, нужно просто дождаться завершения потока. Если я не прав - поправьте.
@user-vf1rw2rt5f
@user-vf1rw2rt5f 7 ай бұрын
Видео не досмотрел и вопрос задал, гений
@timur2887
@timur2887 2 ай бұрын
Лучше всего брать поток из пула, а вместо того, чтобы его ставить в ожидание в цикле (см Thread.Sleep()) и грузить процессор, его надо возвращать обратно в пул. Именно так и работают таски в асинхронном программировании (см Task.Delay())
ОБЯЗАТЕЛЬНО СОВЕРШАЙТЕ ДОБРО!❤❤❤
00:45
Secret Experiment Toothpaste Pt.4 😱 #shorts
00:35
Mr DegrEE
Рет қаралды 39 МЛН
Опасность фирменной зарядки Apple
00:57
SuperCrastan
Рет қаралды 12 МЛН
Марк Шевченко - Микросервисы на C#
1:02:10
Вопросы собеседования на C# программиста
21:04
Програмысли Влог
Рет қаралды 64 М.
Асинхронное программирование на C# (блок 1)
1:01:53
Просто программист
Рет қаралды 6 М.
Thread → Task. Многопоточность и Асинхронность
13:39
Архитектор ПО. Александр Желнин
Рет қаралды 29 М.
CLRium #6: async/await. Машина состояний (Дмитрий Тихонов).
50:50
Мини-конференции CLRium
Рет қаралды 9 М.
Просто o async, await. Без циклов и таймеров. JavaScript
15:55
WebDev с нуля. Канал Алекса Лущенко
Рет қаралды 97 М.
ОБЯЗАТЕЛЬНО СОВЕРШАЙТЕ ДОБРО!❤❤❤
00:45