Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700

Многопоточность. А правдивы ли рекомендации?

18.06.2017, 13:45. Показов 1690. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Обычно советуют создавать количество потоков программы не более числа количества ядер процессора, т.к считается, что это то количество потоков, которое может быть выполнено параллельно для одной программы.
Допустим если ядер 5, то рекомендуемое количество потоков, созданных например при помощи std::thread - 5.

Но сама ОС ведь является тем самым контролером всех этих потоков, и является такой же программой для процессора как и остальные, а значит так же всегда монопольно занимает полностью как минимум одно ядро, что бы управлять своими задами, ведь так? Так каково максимальное количество потоков одной программы может быть выполнено параллельно с учетом количества ядер?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.06.2017, 13:45
Ответы с готовыми решениями:

Рекомендации по ПК
Бюджет не очень большой, но нужно качественную сборку. Нормально ли будет: МП : http://hard.rozetka.com.ua/asus_b150_pro/p6303225/ ...

рекомендации
у меня нет телефонной линии.но очень хочется быть в интернете.какой выход рекомендуете!!

Скрипт рекомендации
Хочу на сайт засунуть скрипт рекомендации, ну типа если сайт понравился, то посоветуй другу. Скрипт отправляет письмо на мыло, которое...

13
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.06.2017, 13:48
Цитата Сообщение от Undisputed Посмотреть сообщение
а значит так же всегда монопольно занимает полностью как минимум одно ядро
Откуда такие сведения?
0
Эксперт С++
 Аватар для hoggy
8973 / 4319 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
18.06.2017, 13:53
Цитата Сообщение от Undisputed Посмотреть сообщение
Обычно советуют создавать количество потоков программы не более числа количества ядер процессора
активных потоков.
которые постоянно кушают какие то задачи.

потоки, которые спят большую часть времени можно создавать столько,
сколько нужно.
Цитата Сообщение от Undisputed Посмотреть сообщение
Так каково максимальное количество потоков одной программы может быть выполнено параллельно с учетом количества ядер?
столько, сколько ядер процессора очевидно жеж.

другое дело, что 5ть ядер не гарантируют вам,
что 5ть тредов будут пырять без остановки.

кванты времени для них никто не отменял.

"количество активных тредов по количеству ядер" - это такой универсальный оптимум,
а не серебряная пуля, которая что то там вам априори будет гарантировать.
2
18.06.2017, 13:58

Не по теме:

hoggy, а ОС технически может зарезервировать себе ядро?

0
18.06.2017, 14:01

Не по теме:

Цитата Сообщение от nmcf Посмотреть сообщение
а ОС технически может зарезервировать себе ядро?
конечно может.

0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
18.06.2017, 14:40  [ТС]
nmcf,
Ну я так подумал, потому что ОС контролирует работу пользовательских программ, и всегда готова что-то следать. Это наводит на мысль что работает она постоянно, пока включен компьютер... А что бы она работала по идее ей нужно выполняться как минимум на одном ядре...

hoggy,
Я имел ввиду что говорят, что потоки программы могут быть выполнены параллельно в том количестве, которое равно количеству ядер. Но тут возникает вопрос, чем занята ОС в такой момент? Она же должна выполняться то же, а значит занимать какое то ядро. Потому что если она хотя бы временно слезет со своего ядра, то например не сможет среагировать на какую то важную вещь, например при наступлении таймаута т.к будет спать... Или в таких случаях одно из ядер каким то образом заставляют освободить дорогу для ОС, принудительно меняя контекст? Если так, то выходит есть некая аппаратная реализация которая работает вплотную с ОС и помогает ей в этих делах?

Вот это не понятно...
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.06.2017, 14:49
ОС прерывания использует, никто не получает ядра в бесконтрольное владение.
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
18.06.2017, 15:03  [ТС]
nmcf,
Если ОС прерывается, то как тогда она реагирует скажем на то, когда приходит время выполнить определенную задачу в определённое время, особенно если это ОС реального времени? Так же интересует кто решает, когда пробудить ОС что бы она и дальше могла управлять процессами
0
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.06.2017, 15:09
Я же говорю: там используются аппаратные прерывания от таймера. За счёт этого всё синхронизируется, а ОС получает управление.
Есть толстая книжка Windows Internals, там (наверное) объясняют подробнее.
1
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.06.2017, 15:18
Лучший ответ Сообщение было отмечено Undisputed как решение

Решение

Процессор всегда по очереди исполняет код пользовательских задач и код операционной системы. Во времени это обычно выглядит так. Операционная система поставила пользовательскую задачу на исполнение на процессор. Через какое-то время (например 0.01 сек) приходит прерывание от аппаратного таймера, из-за чего исполнение пользовательской программы приостанавливается и управление передаётся в ОС. ОС, поразмышляв, может вернуть управление пользовательской программе и процессор будет занят программой до следующего прерывания от таймера. ОС может поставить на исполнение и другую программу и опять процессор будет исполнять программу (но уже другую) до следующего прерывания от таймера. Так реализуется многозадачность в том числе и на одноядерной системе. Т.е. процессор по очереди исполняет различные задачи а между ними вклинивается исполнение кода ОС

Если на процессоре несколько ядер, то ядро исполняется на каждом ядре. Т.е. описанный выше процесс проходит одновременно на нескольких ядрах. Естественно, что в этом случае различные пользовательские задачи могут одновременно исполняться на различных ядрах. Но ОС в моенты прерываний в любом случае исполняется на каждом из ядер. Т.е. нет такого, что операционная система монопольно сидит на каком-то ядре и раздаёт ядра для других задач
2
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
18.06.2017, 15:19
Undisputed, Танненбаума читать, срочно
1
7804 / 6568 / 2988
Регистрация: 14.04.2014
Сообщений: 28,705
18.06.2017, 15:21
Цитата Сообщение от Evg Посмотреть сообщение
Т.е. нет такого, что операционная система монопольно сидит на каком-то ядре и раздаёт ядра для других задач
Ну может, и есть такая реализация где-то.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.06.2017, 15:25
Цитата Сообщение от nmcf Посмотреть сообщение
Ну может, и есть такая реализация где-то
Я не специалист, но как-то интуитивно в этом сомневаюсь. Сильно подозреваю, что без этого невозможно было бы изменить задачу, исполняемую на процессоре
0
901 / 478 / 93
Регистрация: 10.06.2014
Сообщений: 2,700
18.06.2017, 15:37  [ТС]
Evg,
Похоже на правду, спасибо!) Потому что монопольное владение на одноядерной системе привело бы ни к чему... Теперь понял

DrOffset,
Спасибо за совет)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.06.2017, 15:37
Помогаю со студенческими работами здесь

Рекомендации ОС linux
Всем привет! С линухой не знаком-наглухо. Подскажите какую версию воткнуть. Задачи более чем приземленные,никаких спец.задач...

Рекомендации по сборке ПК за 1к$
Доброго времени суток. Нужна помощ в сборке ПК. Бюджет до 1к$. К сожалению я не спец в этом вопросе, поэтому прошу помощи:) Будет...

Рекомендации по дизайну!
Всем привет.... Есть сайт в разработке, всего одна страница: Дайте пжта рекомендации по поводу дизайна сайта.

Рекомендации по сборке
Всем привет. Передумал брать Xeon, выбрал i7. Сборка получилась следующая: Процессор: Intel Core i7-4790; Видеокарта: GIGABYTE...

Критика и рекомендации
Всем, добрый день! Тут очень популярна критика сайтов от профи! Будьте так добры посмотрите мой сайт www.carsaround.ru. Это мой первый...


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru