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

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

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 27, средняя оценка - 4.63
Predlegion
3 / 3 / 0
Регистрация: 21.01.2011
Сообщений: 27
#1

Вопрос про многопоточность и производительность - C++

28.10.2011, 02:03. Просмотров 3770. Ответов 40
Метки нет (Все метки)

Здравствуйте!
Подскажите пожалуйста ответы на следующие вопросы:

1) Правда ли,что многопоточность в программе позволяет увеличить производительность программы, т.е снизить загрузку ЦП?

2)Например есть программный код. Можно ли каким-нибудь образом, используя определенные средства отладки, посмотреть сколько системных ресурсов(а именно загрузка ЦП) едят отдельные куски этого кода? Т.е узнать, на сколько цикл грузит систему или часть определенной подпрограммы?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.10.2011, 02:03
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Вопрос про многопоточность и производительность (C++):

Производительность CPU, КЕШ, многопоточность - C++
Доброго времени суток! Суть проблемы - есть курсовой по системному программированию но я не знаю с чего и начать ( Тема:...

Книга про многопоточность - C++
Подскажите пожалуйста, в какой книге лучше написано про многопоточность, синхронизацию. И где есть хорошие примеры. Например, работа с...

Вопрос про палиндромы - C++
Такая вот задачка по програмированию С++: Ввести рядок символов и составить масив слов-палиндромов (читаются одинаково с права на лево и...

Вопрос про ф-ию mul - C++
Расскажите пожалуйста про ф-ию mul, перегружаемую в классе. Что она делает?

Вопрос про указатели - C++
#include <iostream.h> int main() { int x; int *Pointer; pointer = &x; cout << pointer; cout << *ponter; return 0; ...

Вопрос про outtextxy() - C++
Если в графическом режиме выводить текст с помощью функции outtextxy() поверх другого текста, то новый текст сливается со старым. Прошу...

40
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
29.10.2011, 09:20 #31
Цитата Сообщение от LosAngeles Посмотреть сообщение
конечно, но для операционной системе это прозрачно
Всё равно следует понимать, что поскольку процессор один на два потока (за исключением своих регистров и прерываний), то и используется он в каждый момент времени только одним потоком
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 09:37 #32
Цитата Сообщение от mimicria Посмотреть сообщение
то и используется он в каждый момент времени только одним потоком
У меня никогда не было процессора с НТ, поэтому я сильно не вдавался, но насколько помнится, там параллельность основывается на использовании конвеера команд. Пока один поток конвеер заполняет, второй поток вторым конвеером пользуется. Т.е. параллельность достигается за счёт того, что во время исполнения комманд одного потока происходит декодирование команд второго потока. Как-то так вроде.
Надо этой технологии побольше внимания уделить, раз интел её опять внедрило.)
0
LosAngeles
Заблокирован
29.10.2011, 09:39 #33
Цитата Сообщение от mimicria Посмотреть сообщение
Всё равно следует понимать, что поскольку процессор один на два потока (за исключением своих регистров и прерываний), то и используется он в каждый момент времени только одним потоком
читай внимательней, в одной из моих цитат об этом написано и выделенно жирным шрифтом
0
kravam
быдлокодер
1695 / 882 / 45
Регистрация: 04.06.2008
Сообщений: 5,470
29.10.2011, 10:47 #34
LosAngeles, так-то я в английсколм не силён.
the logical processors in an IA-32 processor supporting Intel HT
Technology share the core resources of the physical processor
.

Я так понял какая-то технология разделяет ядерные ресурсы физического процессора.
То есть дядьки создали физический процессор, а потом создали технологию, которая позволяет из него одного сделать два?

А чё бы сразу два-то не сделать?
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 11:03 #35
Принцип действия Hyper-Threading основывается на том, что в каждый момент времени только часть ресурсов процессора используется при выполнении программного кода. Неиспользуемые ресурсы также можно загрузить работой -- например, задействовать для параллельного выполнения еще одного приложения (либо другого потока этого же приложения).
Чтобы много не копипастить.
0
mimicria
return (true);
1958 / 1095 / 91
Регистрация: 19.04.2011
Сообщений: 2,345
29.10.2011, 12:14 #36
Тоже скопипастю
Когда при исполнении потока одним из логических процессоров возникает пауза (в результате кэш-промаха, ошибки предсказания ветвлений, ожидания результата предыдущей инструкции), то управление передаётся потоку в другом логическом процессоре. Таким образом пока один процесс ждёт, например данные из памяти, вычислительные ресурсы физического процессора используются для обработки другого процесса.
Итог всё равно такой - не одновременно, а пока один из потоков на паузе.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 12:24 #37
Цитата Сообщение от mimicria Посмотреть сообщение
а пока один из потоков на паузе
Цитата Сообщение от mimicria Посмотреть сообщение
один процесс ждёт, например данные из памяти
В том числе дисковой памяти. О чём и идёт речь. Пока один поток ждёт завершения чтения, второй выполняет работу. При этом, первый поток только считывает данные из файла и не делает с ними ничего другого. То, что поток в процессе чтения не загружает процесор, это не наша проблема. Факт в другом, пока первый поток читает данные из файла, второй использует свободные ресурсы процессора.
В контексте чтения файла, я говорил о многопоточном приложении на однопроцессорном компьютере без НТ, разумеется.

Добавлено через 2 минуты
Цитата Сообщение от Deviaphan Посмотреть сообщение
Пока один поток ждёт завершения чтения, второй выполняет работу
Причём, первый поток не бездействует, в нём осуществляется чтение файла, но процессор не используется. Одновременно с чтением файла выполняется работа вторым потоком.
1
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.10.2011, 12:40 #38
Цитата Сообщение от Deviaphan Посмотреть сообщение
Причём, первый поток не бездействует, в нём осуществляется чтение файла, но процессор не используется.
Ну а я о чём? Файловый поток исполняет не процессор, процессор не исполняет.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 12:44 #39
Цитата Сообщение от taras atavin Посмотреть сообщение
Ну а я о чём? Файловый поток исполняет не процессор, процессор не исполняет.
Я это в первом сообщении ещё сказал. Что чтение выполняется "контроллером", поток ожидает прерывания. Второй в это время работает. Но ведь разговор не о том, процессор или кто-то ещё работает, разговор о том, что чтение файла и работа второго процессора происходит одновременно.
0
taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
29.10.2011, 13:00 #40
А я пишу о том, что скорость наращивается за счёт большей нарузки на процессор. Или уменьшение простоев - это снижение нагрузки? И конкретно время загрузки не зависит ни от потоков, ни от ядер. Если кроме загрузки надо делать что то ещё, то можно те операции вынести в отдельный поток, но делить саму загрузку на несколько потоков бессмысленно, быстрее она не произойдёт, если только не с разных дисков.
0
Deviaphan
Делаю внезапно и красиво
Эксперт С++
1305 / 1220 / 50
Регистрация: 22.03.2011
Сообщений: 3,744
29.10.2011, 13:16 #41
Цитата Сообщение от taras atavin Посмотреть сообщение
Если кроме загрузки надо делать что то ещё, то можно те операции вынести в отдельный поток
О чём я и говорю.

Цитата Сообщение от taras atavin Посмотреть сообщение
но делить саму загрузку на несколько потоков бессмысленно
Разумеется.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.10.2011, 13:16
Привет! Вот еще темы с ответами:

Вопрос про наследование. - C++
Добрый день всем! Возможно ли создать производный класс в который будут помещены 2 объекта базового класса с возможностью...

Вопрос про реестр - C++
Здравствуйте господа програмисты!У меня есть программа,честно сознаюсь скачал с интернета и переделал не много,поэтому не доконца...

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

Вопрос про char - C++
Пожалуйста обьясните доступным языком в чем разница между объявлениями, и какие когда лучше использовать char a; char *c; char b=new...


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

Или воспользуйтесь поиском по форуму:
41
Yandex
Объявления
29.10.2011, 13:16
Ответ Создать тему
Опции темы

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