Рейтинг:
9
MK-Gii
Но в целом - есть ли какая-то польза от использования TPL для чисто синхронных потоков?
RickZeeland
Вероятно, нет, если все задачи должны выполняться последовательно ... однако если вы используете пользовательский интерфейс, такой как winforms, может быть полезно сохранить его отзывчивым.
MK-Gii
В моем случае это был просто веб-API, где вызовы к БД, чтобы получить что-то от нее, были сделаны асинхронно, а затем каждый раз ожидали данных, прежде чем идти дальше. Таким образом, потребитель API все еще должен ждать столько же времени, и мне нужно убедиться, что я не забываю ждать каждый раз, когда я пытаюсь получить что-то из БД.
Richard Deeming
Если код на самом деле асинхронный - в данном случае это звучит так, как будто он связан с IO,-то есть преимущество.
Вместо того, чтобы вызывающий поток "зависал" до завершения операции ввода-вывода, выполняемая им работа может быть приостановлена, а поток может быть возвращен в пул и использован для обработки других задач. Когда операция завершена, можно получить свободную нить, чтобы продолжить работу.
Подумайте об этом как о разнице между тем, чтобы дети кричали на заднем сиденье машины - Мы уже почти приехали? Мы уже почти приехали?" снова и снова на протяжении всего путешествия, и чтобы они сидели тихо, глядя на свои телефоны, пока вы не скажете им, что приехали. :)
RickZeeland
Ха-ха, хорошее сравнение, теперь перейдем к запуску SpaceX !
honey the codewitch
Если вы пишете код веб-сервера, держите все синхронно! ASP.NET не предназначен для асинхронности. Жизненный цикл страницы выполняется от начала до конца, поэтому вся обработка должна выполняться последовательно, чтобы страница все равно отображалась. Все, что ты будешь делать-это все испортить. ASP.NET это эвристика пула потоков, так как она не предназначена для этого. Лучше вообще не использовать Task. Надеюсь, это поможет!