1 / 1 / 0
Регистрация: 06.04.2020
Сообщений: 5

Многопоточность: когда и почему лучше использовать thread или async?

18.04.2020, 13:06. Показов 2332. Ответов 2
Метки c++ (Все метки)

Студворк — интернет-сервис помощи студентам
Подскажите, пожалуйста, когда и почему лучше использовать thread или async?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.04.2020, 13:06
Ответы с готовыми решениями:

Thread.Sleep() или Timer. Что лучше использовать?
Здраствуйте уважаемые знатоки. Мне нужно опрашивать определенный метод с переодичностью 30 сек. Что лучше использовать чтобы нагрузка...

IEnumerable<T>, IQueryable<T> когда лучше использовать тот или иной тип коллекций
IEnumerable&lt;T&gt;, IQueryable&lt;T&gt; когда лучше использовать тот или иной тип коллекций?

Почему когда фоновый thread "спит" я не могу убить main thread ?
Привет! Делаю гуй на swing'e, для реализации долговременной задачи создал второй поток. В этом втором потоке вызывается...

2
6771 / 4565 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
18.04.2020, 16:18
Цитата Сообщение от Elliot0509 Посмотреть сообщение
Подскажите, пожалуйста, когда и почему лучше использовать thread или async?
async - это пул потоков, его лучше использовать для запуска отдельной задачи, которая запустилась и завершилась. У него есть средства для получения результата выполнения - std::future.
thread - это отдельный поток, который (грубо говоря) запускается при старте программы и завершается при её остановке, т.е. работает долго. Для него нужно создавать объекты для завершения, синхронизации и т.д. Всё это надо делать вручную.
1
13 / 9 / 4
Регистрация: 18.04.2020
Сообщений: 23
18.04.2020, 19:22
Лучший ответ Сообщение было отмечено Elliot0509 как решение

Решение

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
запускается при старте программы и завершается при её остановке, т.е. работает долго
Совершенно не обязательно)

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
async - это пул потоков
Тоже не совсем верно.

async - штука для предоставления "будущего результата", объекта std::future<>. Может работать в 2х режимах - асинхронном и синхронном, в зависимости от переданного параметра std::launch::( async / deferred ). В первом случае стартанет асинхронно, во втором когда попросим у future отдать результат.

thread запустит исполнение переданного в него вызываемого объекта (функция, лямбда, вызываемая структура) в отдельном потоке. Его можно ждать или не ждать (join/detach).

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

Лит-ра: Энтони Уильямс - Параллельное программирование на С++ в действии. Советую.
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.04.2020, 19:22
Помогаю со студенческими работами здесь

Что лучше использовать QMake или CMake и почему?
Пользуюсь Qt 5.7 MSVC , Qt Creator. Что лучше использовать QMake или CMake и почему?

Когда стоит использовать класс, а когда лучше обойтись без них?
Когда стоит использовать класс, а когда лучше обойтись без них? Когда следует использовать несколько классов? Вот, например. Программа...

1c8 когда лучше использовать запрос, а когда выбор
Хочется в целях повышения образованности уточнить такой момент - когда в восьмерке лучше использовать прямой запрос, а когда выборку...

Когда лучше использовать xml, а когда - БД в PHP?
Когда лучше использовать xml, акогда БД вPHP

Когда лучше использовать рекурсию
Когда лучше использовать рекурсию?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

Новые блоги и статьи
Angular: Вопросы и ответы на собеседовании
Reangularity 15.06.2025
Готовишься к техническому интервью по Angular? Я собрал самые распространенные вопросы, с которыми сталкиваются разработчики на собеседованиях в этом году. От базовых концепций до продвинутых. . .
Архитектура Onion в ASP.NET Core MVC
stackOverflow 15.06.2025
Что такое эта "луковая" архитектура? Термин предложил Джеффри Палермо (Jeffrey Palermo) в 2008 году, и с тех пор подход только набирал обороты. Суть проста - представьте себе лук с его. . .
Unity 4D
GameUnited 13.06.2025
Четырехмерное пространство. . . Звучит как что-то из научной фантастики, правда? Однако для меня, как разработчика со стажем в игровой индустрии, четвертое измерение давно перестало быть абстракцией из. . .
SSE (Server-Sent Events) в ASP.NET Core и .NET 10
UnmanagedCoder 13.06.2025
Кажется, Microsoft снова подкинула нам интересную фичу в новой версии фреймворка. Работая с превью . NET 10, я наткнулся на нативную поддержку Server-Sent Events (SSE) в ASP. NET Core Minimal APIs. Эта. . .
С днём независимости России!
Hrethgir 13.06.2025
Решил побеседовать, с утра праздничного дня, с LM о завоеваниях. То что она написала о народе, представителем которого я являюсь сам сначала возмутило меня, но дальше только смешило. Это чисто. . .
Лето вокруг.
kumehtar 13.06.2025
Лето вокруг. Наполненное бурями и ураганами событий. На фоне магии Жизни, священной и вечной, неумелой рукой человека рисуется панорама душевного непокоя. Странные серые краски проникают и. . .
Популярные LM модели ориентированы на увеличение затрат ресурсов пользователями сгенерированного кода (грязь -заслуги чистоплюев).
Hrethgir 12.06.2025
Вообще обратил внимание, что они генерируют код (впрочем так-же ориентированы разработчики чипов даже), чтобы пользователь их использующий уходил в тот или иной убыток. Это достаточно опытные модели,. . .
Топ10 библиотек C для квантовых вычислений
bytestream 12.06.2025
Квантовые вычисления - это та область, где теория встречается с практикой на границе наших знаний о физике. Пока большая часть шума вокруг квантовых компьютеров крутится вокруг языков высокого уровня. . .
Dispose и Finalize в C#
stackOverflow 12.06.2025
Работая с C# больше десяти лет, я снова и снова наблюдаю одну и ту же историю: разработчики наивно полагаются на сборщик мусора, как на волшебную палочку, которая решит все проблемы с памятью. Да,. . .
Повышаем производительность игры на Unity 6 с GPU Resident Drawer
GameUnited 11.06.2025
Недавно копался в новых фичах Unity 6 и наткнулся на GPU Resident Drawer - штуку, которая заставила меня присвистнуть от удивления. По сути, это внутренний механизм рендеринга, который автоматически. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru