|
0 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 47
|
|
.NET 4.x Асинхронность и многопоточность03.09.2019, 18:40. Показов 10397. Ответов 14
Метки нет (Все метки)
0
|
|
| 03.09.2019, 18:40 | |
|
Ответы с готовыми решениями:
14
Многопоточность или асинхронность?
Асинхронность, многопоточность и тд |
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 03.09.2019, 18:53 | |
|
Асинхронность - выполнение задач независимо и без ожидания завершения потоком инициировавшим запуск.
Многопоточность - выполнение двух и более отдельных последовательностей инструкций одновременно в рамках одного процесса.
1
|
|
|
0 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 47
|
|
| 03.09.2019, 19:00 [ТС] | |
|
nicolas2008, если я правильно понимаю в основе асинхронной модели программирования лежит многопоточность? И если вопрос сформулирован чем отличается асинхронное программирование от многопоточного? Возможно это не совсем корректный вопрос, ну его часто задают на тех же собеседованиях.
Добавлено через 3 минуты nicolas2008, в любом случае, если мы запускаем метод асинхронно, мы можем указать, чтоб главный поток ожидал выполнения данного метода. Взять даже через элементарный делегат Action, с помощью метода EndIvoke(IDispatcher dis)
0
|
|
|
|
||||||||
| 03.09.2019, 19:09 | ||||||||
|
В этом-то и разница. Во время асинхронной операции, вызывающий поток может выполнить какую-то свою работу во время ожидания завершения этой операции. Что-то типа:
0
|
||||||||
|
0 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 47
|
|
| 03.09.2019, 19:21 [ТС] | |
|
Cupko, хорошо. Тогда вопрос можно ли асинхронно выполнять операцию в разных потоках? Вы пишите можно даже синхронно выполнять операцию в другом потоке, вы имеете в виду приостанавливая выполнение основного потока? И вообще как правильно отвечать на вопрос чем отличается асинхронное программирование от многопоточного? Объясните, пожалуйста.
0
|
|
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|
| 03.09.2019, 19:25 | |
Сообщение было отмечено Sirius1989 как решение
Решение
Добрый день. Недавно обсуждали.
Запуск события из фонового потока для взаимодействия с основным Многопоточность - это одновременное выполнение кусков программы. Формулировка простая и ясная как топор. Асинхронность - слишком размытое понятие. Ни один человек в мире не может дать правильную формулировку на 100%. Вкратце: Конкурентность = Асинхронность + Многопоточность. Данную аксиому предложили ведущие собаководы (авторы асинхронности) Конкурентность: любое неблокирующее выполнение кода. С этим вроде все согласились. Асинхронность в самом узком смысле: неблокирующее выполнение кода в единственном потоке. Когда по принципу Event Loop разнообразные мелкие процедурки ставятся в очередь и последовательно исполняются в цикле. Асинхронность в широком смысле - это всё, что касается формулировки и философии Task. То есть фьючерсы, пустые обещания и хотелки, которые как известно, надо три года ждать. А вот в широком смысле, поскольку задачи, асинхронность поглощает в себя многопоточность и становится неотличима от конкурентности.
1
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|||
| 03.09.2019, 19:33 | |||
|
Но это только один из вариантов реализации асинхронности. Кроме многопоточности есть еще вариант, когда задача выполняется на периферийном устройстве, например чтение/запись сетевого потока. В этом случае для выполнения асинхронной задачи не нужен отдельный поток.
1
|
|||
| 03.09.2019, 19:40 | |
|
Не по теме: каждый раз когда задаю сам себе такой вопрос чтобы освежить память мозг выдает
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
||
| 03.09.2019, 19:55 | ||
|
"выполнение задачи независимо от потока инициировавшего её запуск"
1
|
||
|
|
||
| 03.09.2019, 20:32 | ||
Сообщение было отмечено Sirius1989 как решение
РешениеС многопоточностью всё просто. Тут в основе Thread и Thread Pool. Создаете поток и выполняете свой код в другом потоке. С асинхронностью немного сложнее: Есть 3 модели асинхронного программирования в .NET: - Asynchronous programming model - как раз-таки всё что связано с методами BeginSomething(), EndSomething() - самая первая модель, редко где используется. - Event-based Asynchronous Pattern - модель на событиях. Самый распространненый пример - BackgroundWorker класс. - Task-based Asynchronous Pattern - таски и async/await. Task в .NET - это вообще класс представляющий единицу асинхронной операции. Говоря про таски, абстрагируйтесь от потоков. Ибо, не обязательно таска будет выполняться в отдельном потоке. Для чего нужна асинхронность: Тут, собственно, 2 применения. 1. Клиентские приложения (WinForms/WPF). Асинхронность используется чтобы не блочить основной UI поток и ваши формы не фризились при выполнении синхронной операции. Тут либо это все основано на Background-потоке, либо на Application.DoEvents(); методе.2. Серверные приложения (Web, Сокеты). Тут асинхронность нужна для того чтобы освободить поток от ожидания IO-операции. Во время всяких await LongRunningDbSelect(); (а так же доступа к диску, Http-реквестов и т.д.) вызывающий поток возвращается в пул и обрабатывает другого клиента вашего сервера, дабы не тратить потоки на каждого клиента и выполнять несколько операций одновременно.
1
|
||
|
1274 / 975 / 113
Регистрация: 12.01.2010
Сообщений: 1,971
|
|
| 03.09.2019, 22:21 | |
|
истинная асинхронность работает в 2-3 случаях - файлы, сеть, ?? (не скажу даже сходу)
вся остальная асинхронность бессмысленная бесовщина от которой вреда больше чем пользы, просто завуалированные потоки закопанные под тысячей строк кода ради удобства
0
|
|
|
1152 / 860 / 263
Регистрация: 30.04.2009
Сообщений: 3,603
|
|
| 04.09.2019, 00:12 | |
|
m0nax, как насчет фоновых CPU-bound операций?
0
|
|
|
6496 / 3907 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 04.09.2019, 07:48 | ||
|
nicolas2008, как насчет фоновых CPU-bound операций в единственном потоке UI ?
"- Ты видишь суслика? - Нет. - А он есть." Фоновые CPU-bound операции в единственном потоке UI - самая что ни на есть старинная классическая асинхронность. --------- Прекрасная статья о смысле асинхронности, в которой автору удалось в целом разжевать невероятно сложную для понимания тему асинхронности: https://agladky.ru/blog/async-await-example/ Есть мелкая ошибка, но в целом статья изящна.
0
|
||
|
0 / 0 / 0
Регистрация: 07.01.2017
Сообщений: 47
|
||
| 04.09.2019, 13:48 [ТС] | ||
|
0
|
||
|
|
||||||||||||
| 04.09.2019, 16:23 | ||||||||||||
|
При:
0
|
||||||||||||
| 04.09.2019, 16:23 | |
|
Помогаю со студенческими работами здесь
15
Многопоточность, мультипроцессинг и асинхронность на С11
Асинхронность
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
||||
|
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта
Симптом:
После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
|
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
|
Новый ноутбук
volvo 07.12.2025
Всем привет.
По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне:
Ryzen 5 7533HS
64 Gb DDR5
1Tb NVMe
16" Full HD Display
Win11 Pro
|
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
|
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
|
|
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов
На странице:
https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/
нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
|
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов.
. . .
|
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
|
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
|
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут.
В век Веб все очень привыкли к дизайну Single-Page-Application .
Быстренько разберем подход "на фреймах".
Мы делаем одну. . .
|