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

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

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

C++ Многопоточность
C++ C++ и Многопоточность.
C++ Многопоточность
C++ Многопоточность
C++ Многопоточность
C++ Многопоточность
Многопоточность C++
Многопоточность в С++ C++

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

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

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

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

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

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

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

Не по теме:

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



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

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

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

В общем, у многопоточности много лиц и применений, всего на одной странице не написать.
Yandex
Объявления
11.05.2013, 08:57     Многопоточность
Ответ Создать тему
Опции темы

Текущее время: 09:12. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru