Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > .NET Frameworks (точка нет фреймворки) > C# (си шарп)
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.03.2015, 23:41   #1
datgen
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 36
По умолчанию асинхронность многопоточность

Здравствуйте, расскажите пожалуйста доходчивым языком в чем разница, между использованием асинхронных методов и созданием потоков через thread, как я понял пользоваться асинхронностью правильнее ибо используются свободные потоки из пула потоков и пул управляет ими эффективней и т.д.
datgen вне форума Ответить с цитированием
Старый 11.03.2015, 23:54   #2
Alex11223
Старожил
 
Аватар для Alex11223
 
Регистрация: 12.01.2011
Сообщений: 19,500
По умолчанию

Вы про async/await что ли?

Ну основное отличие (и цель их введения) в том, что так проще писать код, не?
Ушел с форума, https://www.programmersforum.rocks, alex.pantec@gmail.com, https://github.com/AlexP11223
ЛС отключены Аларом.
Alex11223 вне форума Ответить с цитированием
Старый 12.03.2015, 08:49   #3
datgen
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 36
По умолчанию

Я не именно про async/await я вообще про всю асинхронность в целом.
А async/await по моему да, просто проще позволяет писать.
datgen вне форума Ответить с цитированием
Старый 12.03.2015, 10:09   #4
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Асинхронность не подразумевает использование пула потоков вообще никак. Там внутри никто не запрещает сделать свой Thread.
При этом у использования пула есть как преимущества, так и недостатки:
+: легковесные потоки, так как они уже созданы. не тратятся ресурсы на их создание то бишь
-: если все потоки из пула заняты, вы можете ждать своей очереди очень очень долго (Thread же будет работать в любом случае)
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 12.03.2015, 10:59   #5
datgen
Пользователь
 
Регистрация: 30.03.2011
Сообщений: 36
По умолчанию

понятно что никто не запрещает создать thread в асинхронном методе, я полагал что если мы создаем асинхронный метод, то сначала будет найден свободный поток в пуле и этот метод будет выполняться в одном из свободных поток пула, а если как вы говорите "Асинхронность не подразумевает использование пула потоков вообще никак." то тогда где будет выполняться асинхронный метод?

вот цитирую с один из множества сайтов которые последние 2 дня читаю по этой теме"Для асинхронного вызова чего-либо каркасу нужен поток для выполнения работы. Текущий поток не подходит, потому что это сделало бы вызов синхронным (блокирующим). Вместо этого среда выполнения ставит в очередь запрос на выполнение функции в потоке из пула потоков .NET. "

то есть в моем понимании сейчас сложилось так, в пуле потоков вроде около 1000 потоков свободно, следовательно если задача подразумевает создание не очень большого количества потоков и мы знаем что при выполнении мы будем занимать например 100 потоков то лучше использовать асинхронные методы которые будут использовать пул, а раз используем пул то экономим ресурсы, но если мы знаем что при решении задачи может создавать очень большое количество потоков и есть опасность в том что будет тратиться время на ожидание свободных потоков из пула то лучше использовать thread и создавать столько сколько нам нужно.

Последний раз редактировалось datgen; 12.03.2015 в 11:11.
datgen вне форума Ответить с цитированием
Старый 12.03.2015, 12:03   #6
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

асинхронность означает что действие запущено на выполнение и выполняется отдельно.
где и кем не оговаривается, это может быть вообще другая машина.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 12.03.2015, 23:37   #7
Selestis
Форумчанин
 
Аватар для Selestis
 
Регистрация: 21.01.2009
Сообщений: 719
По умолчанию

Цитата:
при решении задачи может создавать очень большое количество потоков и есть опасность в том что будет тратиться время на ожидание свободных потоков из пула
В такой ситуации у вас гораздо быстрее начнутся проблемы с ресурсами на Thread'ах. Потоки не бесплатные: на них уходит память и загрузка ЦП (и вообще их число тоже ограничено системой). Так что в большинстве случаев пула вам будет достаточно.
Насчет
Цитата:
я полагал что если мы создаем асинхронный метод, то сначала будет найден свободный поток в пуле
То, что вы читали, вероятно ограничивается асинхронными методами из стандартного набора .NET фреймворка - для них это утверждение, насколько я знаю, верно. Но асинхронный вызов - гораздо более общее понятие. Как сказал Пепел, это может быть даже не та же аппаратура. Как мне захочется написать асинхронный метод, так и напишу, а тот кто его использует, может ничего и не знать о деталях.
Изобретатель велосипедов
Selestis вне форума Ответить с цитированием
Старый 30.05.2018, 15:32   #8
oldsnowman
Участник клуба
 
Аватар для oldsnowman
 
Регистрация: 20.02.2015
Сообщений: 1,226
По умолчанию

Цитата:
Асинхронность говорит о порядке исполнения кода. Если вызываемая функция не возвращает значение сразу, а отдаёт управление вызывающему коду с обещанием выдать значение позже, то эта функция асинхронная.
Коротко и ясно про асинхронность.
oldsnowman вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
многопоточность blacktener Общие вопросы по Java, Java SE, Kotlin 1 25.07.2012 13:18
Многопоточность t2skler Общие вопросы C/C++ 4 16.04.2012 14:24
Многопоточность nats C# (си шарп) 5 25.06.2011 11:51
Многопоточность Dezmont_ Общие вопросы .NET 1 06.11.2010 18:34
Синхронность и асинхронность Kapitann Свободное общение 10 06.08.2010 12:23