Асинхронное программирование в c# стало стандартом де-факто с выходом .NET FrameWork 4.5 и появление ключевых слов: async и await. В современном мире трудно представить приложение: API, десктопное приложение без асинхронных вызовов. Однако, мне стало интересно самому разобраться, что на самом деле происходит по капотом: как компилятор преобразует асинхронный код, что такое state machine и почему использование .Result/.wait() может привести к deadlock.
Рубрика «task»
Асинхронность в c#: как async-await работает внутри и почему не стоит писать .Result
2026-03-28 в 22:25, admin, рубрики: C#, synchronizationcontext, task, асинхронностьОбъясняем UniTask так, чтобы понял даже ребенок (для Unity разработчиков и не только)
2025-05-19 в 4:18, admin, рубрики: async, await, C#, Gamedev, task, unitask, unity, оптимизация, просто о сложномПредставь, что ты строишь огромный замок из LEGO. Это твоя игра в Unity! Ты хочешь, чтобы в замке двигались рыцари, летали драконы, а еще играла музыка – и всё это одновременно!
Что такое "задачи" в программировании?
Когда ты говоришь компьютеру, что делать, ты даешь ему "задачи". Например:
-
"Нарисуй рыцаря!"
-
"Подожди 1 секунду."
-
"Запусти музыку!"
Что если задачи долгие?
C# Как работает async-await? Асинхронное программирование
2025-04-23 в 10:15, admin, рубрики: .net, async, asynchronous, AsyncStateMachine, await, C#, task, threadpool, valuetask, асинхронность0. Кто такая асинхронность?
Асинхронность — это способ не блокировать поток, пока ты ждешь завершения операции. Она позволяет программе продолжать работать, даже если одна из операций (например, запрос к серверу) занимает время.
Какие преимущества дает?
Codeby.Games. CTF TASK «СМС»-«SMS»
2025-03-21 в 11:16, admin, рубрики: ctf, hash, redteam, SQLi, taskПриветствую всех любителей CTF и этичного хакинга на стороне Red Team! В этой статье мы рассмотрим прохождение легкого таска "СМС", разработанного пентестерами из команды Codeby.Games.
Справка: codeby.games - отечественный условно бесплатный веб-проект, где каждый может попрактиковаться в оттачивании навыков наступательной кибербезопасности. Таски (задания) представлены в широком спектре: начиная от использования методов OSINT и заканчивая компрометацией учебного домена Active Directory. CTF разделяются на три группы - "Легкий", "Средний", "Сложный" в различных категориях. Но подробнее об этом - на официальном сайте проекта.
Разобраться раз и навсегда: Task.WhenAll или Parallel.ForEachAsync в C#
2024-02-08 в 9:06, admin, рубрики: .net, async, csharp, parallel, parallel programming, parallel.foreach, ruvds_статьи, task, tpl
Все хотят писать код, который работает быстро. Часто мы сидим, просматривая написанные алгоритмы и пытаясь понять, что можно сделать, чтобы настроить их производительность. В таком случае часто прибегают к параллельному выполнению задач. Конечно, если можно выполнять задачи параллельно и делать эту работу одновременно, то ожидаемо общее количество времени на обработку сократиться.
Если быстро посмотреть на результаты, которые появляются в интернете при поиске советов по реализации подобных вещей, то можно увидеть, что есть как много похожих, так и различных предложений от различных программистов. В какой-то момент поиска вы, вероятно, столкнётесь с поиском идеей использования Task.WhenAll или Parallel.ForEachAsync.
При чтении некоторых из этих материалов будет видно много различных противоречивых ответов как на StackOverflow, так и по всему интернету. Сегодня я собираюсь сравнить эти два метода с помощью определённых бенчмарков, которые стравят их друг против друга, чтобы, наконец, выяснить применимость каждого из двух методов.
Читать полностью »
Как эффективнее читать данные с диска (при условии, что у вас .Net)
2017-06-27 в 7:12, admin, рубрики: .net, async, asyncawait, await, comparison, hdd, io bound, io operation, microsoft .net, performance comparison, ssd, task, thread, threading, windows, Блог компании Технологический Центр Дойче Банка, Программирование, разработка под windows, сценарии, Тестирование IT-систем, чтение данных, чтение данных с диска
Привет!
Некоторое время назад меня заинтересовал вопрос: как эффективнее всего читать данные с диска (при условии, что у вас .Net)? Задача чтения кучи файлов встречается во множестве программ, которые при самом старте начинают вычитывать конфигурации, некоторые самостоятельно подгружают модули и т.д.
В интернете я не нашел подобных сравнений (если не считать тюнинга под определенные конфигурации).
Читать полностью »
(Не) любителям protothreads посвящается: Высокоуровневые функции для работы с 1-Wire
2017-04-12 в 12:40, admin, рубрики: 1wire, C, dma. isr, DS18B20, interrupt, irq, kernel, maxim, Realtime, scada, stm32, stm32l, stm32l-discovery, stm8, stm8l, stm8l-discovery, task, легковесные потоки, многозадачность, программирование микроконтроллеров, Разработка для интернета вещей, системное программированиеПодразумевается, что мы будем писать прошивку под «голое железо». В противном случае применение protothreads смысла не имеет, т.к. мультизадачность должна обеспечиваться средствами ОС. Подразумевается также, что нам необходимо реализовать несколько более-менее сложных алгоритмов, связанных с операциями ввода-вывода. Ну и, как всегда в микроконтроллерах, очевидные требования по экономии RAM и энергопотребления.
Читать полностью »
Bake – запускаем таски на bash
2017-03-14 в 19:43, admin, рубрики: bash, runner, shell, task, task-runner, Программирование, Разработка под LinuxДумаю многим известна ситуация, когда собственный изобретенный велосипед нигде потом не используется. Поэтому я долго не решался опубликовать эту разработку, пока не обратил внимание, что таскаю его из проекта в проект. И так, одним из неотъемлемых элементов современной разработки являются так называемые таск раннеры – это Grunt/Gulp для nodejs, Rake для Ruby, Make для C/C++ и т.п. А для главного инструмента разработчика – консоли – ничего подобного нет. Точнее есть, но, как это обычно бывает, не совсем то. В результате изысканий, на свет появился инструмент Bake – таскраннер написанный на bash с поддержкой модульной структуры.
Основные особенности:
- Таски в виде функции.
- Поддержка аргументов
- Модули.
