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

Потоки и процессы - C++

Восстановить пароль Регистрация
 
Dmitry74
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 10
24.11.2013, 00:41     Потоки и процессы #1
Вопрос общего плана.
Использую программу, выполняющую большой объем вычислений и рисование в файл. Делаю распараллеливание в виде одновременно работающих нескольких процессов. Если вместо нескольких обычных процессов использовать один многопоточный, увеличится ли скорость выполнения программы и если да, то насколько сильно.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Tulosba
:)
Эксперт С++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
24.11.2013, 10:19     Потоки и процессы #2
Dmitry74, чтобы узнать изменится ли и на сколько, нужно сделать и замерить. По большому счету, вся разница в том, что потоки имеют общее адресное пространство, а процессы нет. Т.о. для синхронизации проще и эффективнее использовать один процесс. Еще стоит учесть время запуска, для процессов должно быть больше, чем для потоков. Имхо. Надо замерять все равно.
Dmitry74
0 / 0 / 0
Регистрация: 04.10.2013
Сообщений: 10
24.11.2013, 15:51  [ТС]     Потоки и процессы #3
А имеет ли смысл разбивать программу на большее количество потоков/процессов(чисто для вычислений), чем число имеющихся ядер в процессоре?
OhMyGodSoLong
~ Эврика! ~
 Аватар для OhMyGodSoLong
1234 / 983 / 42
Регистрация: 24.07.2012
Сообщений: 2,002
24.11.2013, 17:12     Потоки и процессы #4
Цитата Сообщение от Dmitry74 Посмотреть сообщение
А имеет ли смысл разбивать программу на большее количество потоков/процессов(чисто для вычислений), чем число имеющихся ядер в процессоре?
It depends. С чисто вычислительной точки зрения — нет, только лишние потери времени на переключение контекста. Идеальный вариант: количество физических потоков исполнения (количество ядер; чуть больше, если есть hyper-threading или аналоги) + 1 (один поток висит и ждёт IO-операций с железом, памятью и т. п., остальные усиленно считают).

С точки зрения кода — может и имеет, если вычисления удобно и красиво разбиваются на N независимых потоков. Даже если N больше, чем доступное количество ядер, то в таком случае имеет смысл разбить всё на потоки и с помощью worker-threads отобразить эти N потоков на M физических потоков.
Yandex
Объявления
24.11.2013, 17:12     Потоки и процессы
Ответ Создать тему
Опции темы

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