Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ovner
7 / 7 / 0
Регистрация: 06.10.2012
Сообщений: 140
#1

Многопоточность - C++

11.05.2013, 01:56. Просмотров 601. Ответов 2
Метки нет (Все метки)

Здраствуйте! Объясните пожалуйста понятными словами что такое многопоточность и для чего она нужна?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
11.05.2013, 01:56     Многопоточность
Посмотрите здесь:

Многопоточность - C++
Не особо понимаю мнопоточность в с++. Есть задание типа.... Сделать программу, иммитирующую работу одновременно двух конечных автоматов....

Многопоточность - C++
Есть задание: Написать и протестировать функцию, которая находит в массиве минимальный по модулю элемент и заменяет им все элементы с...

Многопоточность в С++ - C++
Добрый день! Если я создам экземпляр класса в одном потоке и начну одновременно из нескольких других потоков обращаться тому...

Многопоточность - C++
Здравствуйте! Пожалуйста посоветуйте литературу или какие либо статьи для изучение многопоточных приложений где расписано все подробно....

Многопоточность - C++
Всем привет, заметил в одном проекте подобный код: struct Counter { int i; } #define g_counter ACE_Singleton< Counter,...

Многопоточность - C++
Здравствуйте уважаемые форумчане! Суть проблемы такова, в нижней задаче есть две методы сортировки, и эти два метода надо чтобы выполнялись...

Многопоточность - C++
При добавлении больше 10000 элементов в таблицу на форму форма зависает, как это исправить? (использую QT)

Многопоточность - C++
podskazite paru premerov mnogopoto4jnasti, ili gde eto najti.

Многопоточность С++ - C++
Добрый вечер! написал вот такую программку. std::vector<std::thread> threads; std::recursive_mutex mutex; for (int i...

Многопоточность c++ - C++
Добрый день! Я только начинаю изучать многозадачность в c++ и у меня возник вопрос о том как возможно использовать один объект разными...

многопоточность приложения - C++
есть код #include <windows.h> #include <locale.h> #include <stdio.h> #include <stdlib.h> int main() ...

Многопоточность и ститичность =) - C++
программка большая и архитектура такая: class cApp : public cApplication { private: ... public: cApp(); BOOL Init();


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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ProNoooob
72 / 72 / 6
Регистрация: 14.10.2009
Сообщений: 121
11.05.2013, 03:32     Многопоточность #2
Многопоточность - паралельное выполнение кода.

Например у тебя программа копирует большой файл и есть кнопка "отмена".

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

В другом варианте ты можешь сделать 2 потока. Один копирует файл, а другой ждет нажатие на кнопку. Если нажатие произошло, то второй поток посылает первому сообщение о завершении операции.
Убежденный
Системный программист
Эксперт С++
15298 / 6930 / 1096
Регистрация: 02.05.2013
Сообщений: 11,340
Завершенные тесты: 1
11.05.2013, 08:57     Многопоточность #3
Многопоточность - это использование в программе нескольких потоков.
Цели многопоточности могут быть разными:

1) Улучшение производительности.
Если вычислительную задачу можно разделить на независимые части, то имеет смысл
распределить эти части между несколькими потоками. Выигрыш может оказаться
многократным, хотя это зависит от множества факторов. Например, от того, как
потоки "обеспечены" физическими ядрами или процессорами, существует ли между
ними борьба за общие ресурсы и т.д. Параллельность - частный случай данного примера.
Когда все потоки выполняют один и тот же код, это и есть параллельность.
Хотя многопоточность вовсе не означает параллельность.

2) Сохранение времени отклика интерфейса пользователя.
Иногда бывает необходимо выполнить в программе длительную операцию.
Если делать это в том же потоке, который отвечает за интерфейс пользователя (GUI-поток),
программа теряет отзывчивость, начинает "подвисать", перестает реагировать на нажатия
кнопок и т.д. Чтобы этого не просиходило, все вычисления выносятся в отдельный рабочий
поток, а GUI-поток остается свободным.

Не по теме:

Программистов, которые запихивают вычисления в GUI-поток, нужно бить по рукам
длинной линейкой. А еще лучше - заставить их пользоваться программами, написанными
по этому принципу.



3) Реализация асинхронности.
Если существует длительная операция, результат которой не требуется немедленно,
можно поручить ее выполнение отдельному потоку. Результат выполнения запрашивается
позже, когда операция будет завершена. Эта схема широко используется, например, в
работе с оборудованием: поток запрашивает запись или чтение, устройство возвращает
статус "pending" (ожидайте), после чего поток может возвратиться к своим "делам".
Когда устройство завершает ввод-вывод, оно сигнализирует потоку о завершении.

4) Безопасность.
Многопоточность также можно использовать в целях безопасности, когда необходимо
отделить код с высокими полномочиями от кода, который пришел из недоверенной среды и
который необходимо запускать в контексте клиента, с низкими правами. Для этого
также может применяться создание отдельного потока.

5) Архитектура.
Многопоточность применяют и там, где необходимо сделать код более простым и
понятным для восприятия. Например, вместо одной длиннющей функции, которая вычисляет
дебет-кредит, обновляет компоненты системы и одновременно синхронизируется с удаленной
базой данных, можно сделать три изолированных друг от друга потока и поручить
каждому свою задачу.

В общем, у многопоточности много лиц и применений, всего на одной странице не написать.
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru