отдельное спасибо за объяснения на доп ресурсе с примером кода!
@it_catt3 ай бұрын
Спасибо больше за объяснение! самое понятное объяснение
@ivannebyshinets56822 жыл бұрын
Отличный урок, спасибо!
@Antonina863 жыл бұрын
Спасибо, Андрей, хороший контент без воды!!!
@РайкиТак2 жыл бұрын
Спасибо большое !! Очень полезно! Рада , что нашла вас!
@AndreyShyrokoriadov2 жыл бұрын
А я рад подписчикам - представителям прекрасной половины человечества. Их у меня на канале около 10%.
@РайкиТак2 жыл бұрын
@@AndreyShyrokoriadov очень хорошо рассказано про потоки) Теперь у меня в голове все уложилось по полочкам) На эту базу уже можно читать Рихтера. Сразу без понимая всего та, часть книги, где он пишет про потоки не зашла.
@ОргПетров3 жыл бұрын
Молодец! Хорошие видео делаешь! Продолжай в том же духе!👍
@AndreyShyrokoriadov3 жыл бұрын
Спасибо! В планах - создание около 35 видео на тему C#, то есть ещё около 15 видео. А потом будут видео на другие темы информатики.
@olegholostenco87363 жыл бұрын
@@AndreyShyrokoriadov Спасибо за работу. С нетерпением жду следующих уроков =)
@AndreyShyrokoriadov3 жыл бұрын
@@olegholostenco8736 я стараюсь публиковать новые видео каждую субботу с утра.
@Meisst2 жыл бұрын
Спасибо за труд!
@Дмитрийсекрет-н7о3 жыл бұрын
классный урок. Подготовка к собеседованию.
@yz777zhumabayev62 жыл бұрын
Очень наглядно) Спасибо
@MishkinFedor3 жыл бұрын
Видео класс! Только не услышал про то в каких потоках выполняются Task. Если я не ошибаюсь, то за это отвечает сам фреймворк. Считается что фреймворк управляет потоками лучше и при использовании Task разработчику не надо думать о потоках.
@AndreyShyrokoriadov3 жыл бұрын
Спасибо за комментарий и подписку. Если у Вас есть выбор что использовать: Thread, ThreadPool или Task, то конечно лучше использовать Task. О разнице между Thread и ThreadPool я по моему говорил в видео, а что касается ThreadPool и Task, то между ними разница следующая: при использовании Task Вы всегда знаете когда выполнение задания закончено, а при использовании ThreadPool нет встроенного способа определить закончено ли задание и какое значение было возвращено. Собственно этот недостаток ThreadPool послужил причиной появления концепции Task. В .Net есть такое понятие, как TaskScheduler - он отвечает за старт заданий и управляет заданиями в процессе их работы. TaskScheduler использует потоки из ThreadPool. То есть "под капотом" Вы и так используете ThreadPool, но теперь у Вас есть доступ к статусу задания (завершено/не завершено) и если задание завершено, то есть доступ к его результату. После того как я закончу серию видео о C# я планирую выпустить одно большее видео, которое будет называться Errata ("ошибки" на латинском языке) - в этом видео дам более детальные ответы на некоторые вопросы. Пока таких вопросов 3 (на основании комментариев зрителей) и среди них будет Ваш вопрос о том, в каких потоках выполняется Task.
@MishkinFedor3 жыл бұрын
Хорошо, спс, будем ждать видео
@ramil92092 жыл бұрын
@@AndreyShyrokoriadov идея супер, такого действительно нет про разбор ошибок
@ramil92092 жыл бұрын
@@AndreyShyrokoriadov планируете ли вы в будущем снимать уроки по обучению. Net core? Хотелось бы ещё видео о проведении ревью, рефакторинге кода, такое часто дают на собесах
@AndreyShyrokoriadov2 жыл бұрын
@@ramil9209 видео о .net core уже есть на канале. Видео о ревью и рефакторинге - хорошая идея.
@C0ntrolDev Жыл бұрын
Спасибо!
@РНС_Саакашвили Жыл бұрын
спасибо . . . поставил лайк
@minimalstory2 жыл бұрын
напомнило картинку, где у африканских детей в учебном классе были картонные компы.
@AndreyShyrokoriadov2 жыл бұрын
😂😂😂
@vael655524 күн бұрын
Задействуется ли доп. поток во время исполнения асинхронного метода?
@redice89284 ай бұрын
А как async await раскрывается под капотом, и можно ли получить резалт без использования этих ключевых слов и без блокировки основного потока
@SoferPeOZN3 жыл бұрын
Очень хотелось б узнать про mutex и semaphore от вас 🙂
@AndreyShyrokoriadov3 жыл бұрын
Я немного прояснил ситуацию с mutex и semaphore в этом видео kzbin.info/www/bejne/rmLEnJhmZ9iaj5I
@motojpeg3 жыл бұрын
Ручка с изолентой? Для защиты от претензий бренда?))
@AndreyShyrokoriadov3 жыл бұрын
В этом случае я не хотел рекламировать "бренд" :) По сути это ручка с логотипом одного из моих клиентов.
@IPmen100017 ай бұрын
Есть ли у вас лекция про асинк эвейт?
@AndreyShyrokoriadov7 ай бұрын
На сколько я помню, в моих видео нет видео посвященного исключительно ключевым словам async/await
@motojpeg3 жыл бұрын
Такая достаточно тихая и спокойная речь при подаче материалов убаюкивает))) А еще походу у Автора запись материала происходит в вечернее время, а тихая речь нужна для того, чтобы не разбудить спящих детей))
@AndreyShyrokoriadov3 жыл бұрын
Интересное наблюдение. Вообще у меня просто тихий голос - это имеет свои преимущества и недостатки.
@glorglorsky79872 жыл бұрын
Непонятно про async await, await говорит нам о том, что тут надо дождаться выполнения задачи, и получается поток блокируется , до тех пор пока не будет выполнена задача? А в чем тогда проявляется асинхронность?
@AndreyShyrokoriadov2 жыл бұрын
Асинхронность хорошо видно в приложениях с интерфейсом пользователя. Попробуйте скачать файл или данные из веб услуги синхронно в потоке интерфейса пользователя (UI Thread). Приложение будет подвисать. Если программист оставить поток интерфейса пользователя в покое и основную работу приложения будет выполнять асинхронно в отдельных потоках, то приложение не будет подвисать. Когда асинхронная операция будет завершена, интерфейс пользователя буде обновлен. Во время выполнения асинхронной операции пользователь может спокойно взаимодействовать с интерфейсом пользователя и вызывать другие асинхронные операции, например одновременно скачивать или подгружать несколько файлов.
@glorglorsky79872 жыл бұрын
@@AndreyShyrokoriadov получается задача , например скачивание, или обработка, уйдет в тредпул. А пользователь будет работать с главным потоком?
@AndreyShyrokoriadov2 жыл бұрын
@@glorglorsky7987 да, Вы правильно поняли.
@anonym15483 жыл бұрын
Андрей, объясните пожалуйста, как работать с очередью многопоточно. Допустим, есть очередь и её необходимо обрабатывать в 5 потоков. Как это лучше всего реализовать? Знаю есть класс ConcurrentQueue, но как с ним работать многопоточно, я не очень понимаю. Спасибо за видео, очень полезное!
@AndreyShyrokoriadov3 жыл бұрын
Спасибо за подписку и комментарий. Обратите внимание на это видео kzbin.info/www/bejne/i6jSYZWvabR7oNU - там есть пример использования коллекции ConcurrentQueue. Код в этом видео доступен здесь: github.com/ashyrokoriadov/TelephoneExchange
@shkippitor18952 жыл бұрын
Спасибо за видео. Когда мы создаем класс Thread, мы создаем прямо отдельный поток или же как бы берем его из ThreadPool? И по поводу работы Task хотелось бы уточнить, получается мы задаем какую то операцию нашей задачи, она арендует поток из ThreadPool, выполняет вычисление, как только вычисление завершено, передает результат исполнения в арендованный поток и затем его снова возвращает в ThreadPool?
@AndreyShyrokoriadov2 жыл бұрын
Спасибо за комментарий. Моё пониманием такое: количество потоков ограничено. Просто если вы берете поток через класс Thread, Вы можете попасть в ситуацию, когда доступных потоков просто не будет и в приложении появится ошибка. ThreadPool это как бы надстройка над потоками и он за нас решает проблемы связанные с использованием потоков: "выдает" нам потоки, "забирает" их обратно, когда работа в потоке выполнена. Что касается ThreadPool и Task, то между ними разница следующая: при использовании Task Вы всегда знаете когда выполнение задания закончено, а при использовании ThreadPool нет встроенного способа определить закончено ли задание и какое значение было возвращено. Собственно этот недостаток ThreadPool послужил причиной появления концепции Task. В .Net есть такое понятие, как TaskScheduler - он отвечает за старт заданий и управляет заданиями в процессе их работы. TaskScheduler использует потоки из ThreadPool. То есть "под капотом" Вы и так используете ThreadPool, но теперь у Вас есть доступ к статусу задания (завершено/не завершено) и если задание завершено, то есть доступ к его результату.
@shkippitor18952 жыл бұрын
@@AndreyShyrokoriadov Спасибо за подробное разъяснение)
@IPmen100017 ай бұрын
Подскажите пожалуйста никак не могу понять. Есть метод асинхронный в Web API который возвращает какие то данные в методе стоит задержка на 10 сек. Так вот никак не могу понять клиент сразу получит ответ но он будет пустой т.е он получит таску без данных. Или если клиент задержится на странице то данные ему придут через секунд? Спасибо
@AndreyShyrokoriadov7 ай бұрын
данные придут через "икс" секунд. В это время в интерфейсе пользователя будет какая то анимация символизирующая ожидание. То есть клиент ничего сразу не получит. Он получит данные, как только они будут готовы (после выполнения таска). А если таск настолько массивный, что он длится минуты или даже часы, то можно клиенту сразу вернуть статус 201 Accepted (естественно без данных). Когда таск будет выполнен об этом надо как-то проинфирмировать клиента (есть разные способы, например с помощью библиотеки SignalR). Сообщение клиенту будет содержатьинформацию о том, что такс закончился и данные можно скачать без задержек.
@IPmen100017 ай бұрын
@@AndreyShyrokoriadov спасибо большое за разъяснения 🤝
@notn93803 жыл бұрын
Подписался.
@AndreyShyrokoriadov3 жыл бұрын
Большое спасибо.
@awdesawdeska61613 жыл бұрын
Когда видео про обобщённые классы?
@AndreyShyrokoriadov3 жыл бұрын
kzbin.info/www/bejne/hp-wg5RvjLaejsk
@awdesawdeska61613 жыл бұрын
@@AndreyShyrokoriadov спасибо
@Александр-и3й3д Жыл бұрын
Чуш, начиная примерно с 8 минуты - async не делает метод асинхронным, а даёт возможность запустить в нём асинхронную операцию - в нем не обязательно вызвать через await что-то, его можно использовать как обычный метод
@AndreyShyrokoriadov Жыл бұрын
С удовольствием посмотрел бы видео с Вашей версией объяснения этой темы, но что-то у Вас на канале пустовато... Для такого претензионального заявления. Кстати словао "чушь" пишется с мягким знаком.
@aleksthomson9457 Жыл бұрын
бумажка и ручка? О_о
@AndreyShyrokoriadov Жыл бұрын
Конечно :)
@РНС_Саакашвили Жыл бұрын
не знаю кто удалил коммент поэтому повторю его
@РНС_Саакашвили Жыл бұрын
хочу вам подсказать что нужно изменить - с точки зрения начинающего программиста .. . вот вы говорите "существует 4 конструктора класса ПОТОК" . . . так вот когда вы излагаете при СИСТЕМНЫЕ конструкторы, свойства, методы, делегаты, расширения - нужно(на примере данного случая) показать на секунду вот эту страничку(тут адрес интернет-страницы Микрософта с одним из 4-х конструкторов потока) и продолжать излагать НА ПРИМЕРЕ таких или аналогичных сигнатур тогда начинающие будут знать как применить этто или подобное . . . ни у одного из блогеров этого нет(хотя некоторые периодически нажимают F12) . . . особенно это поможет когда там вообще нет примера - только сигнатура
@AndreyShyrokoriadov Жыл бұрын
@@РНС_Саакашвили Хороший и полезный комментарий. Спасибо.
@РНС_Саакашвили Жыл бұрын
@@AndreyShyrokoriadov тогда будет смотреть ПОИНТЕРЕСНЕЙ - ведь такие методы изложения нигде ни раскрыты(на других ресурсах)
@krb71592 жыл бұрын
А как узнать количество потоков в системе?
@AndreyShyrokoriadov2 жыл бұрын
Если честно, я не знаю и я не никода не задвался этим вопросом. Если потоков не хватает, то наверное задания, которым не хватило, будут в ожидании, когда будут свободные потоки и такие азадания не будут выполняться. Если Вам интересно Вы можете поискать в англоязычной документации по .Net сколькими потоками может одновременно "жонглировать" .Net .
@SetAngelGreen11 ай бұрын
У меня возник момент когда на одном ПК многократный вызов одного и того же Task мог выполнять их в разное время независимо друг от друга, а на другом, все Task (вызов одного и того же задания или же разные Task) встали в очередь и ожидали выполнение последовательно.
@dy0mber84710 ай бұрын
@@SetAngelGreenсколько у вас ядер на ПК из первого и на ПК из второго случая?