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

Как создать 1 000 000 потоков ?

18.11.2014, 16:13. Показов 2390. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам


Нужно создать очень много потоков, даже больше чем в сабже... Возможно ли это? Известный факт, что например Windows уже начинает глючить на 60...80 К потоках... Как то можно я уж не знаю виртуализировать что ли потоки, чтоб можно было бы создавать их сколько угодно и ничего не тормозило бы?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
18.11.2014, 16:13
Ответы с готовыми решениями:

Целое значение близкое к 7 000 000 000
Здраствуйте, нашел так называемый проект ейлер с задачами для ищущих=) В общем задача найти самый большой простой делитель числа. ...

Вывести на экран 1 000 000 чисел
Вывести на экран попорядку 1 000 000 чисел с максимальной скоростью выполнения операции. (С++)

Как получить битовую маску вида 100.000
Как получить битовую маску вида 100...000? первая 1, все остальные нули. ПРобовал так, но почему-то не работает: DWORD mask = ~((~0)...

15
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
18.11.2014, 16:27
А они должны при этом работать?
1
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
18.11.2014, 16:27
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Нужно создать очень много потоков, даже больше чем в сабже...
А что - под столом стоит суперкомпьютер с миллионом ядер?
1
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.11.2014, 16:29
мне кажется тебя система пошлет с таким запросом
1
Заблокирован
18.11.2014, 16:33  [ТС]
Цитата Сообщение от SatanaXIII Посмотреть сообщение
А они должны при этом работать?
Конечно! Хотя и выполнять они будут достаточно ограниченный ряд примитивных задач

Добавлено через 1 минуту
Цитата Сообщение от 0x10 Посмотреть сообщение
А что - под столом стоит суперкомпьютер с миллионом ядер?
Да в том то и дело, что нет. Но тут же не стоит задачи, чтоб все потоки на разных ядрах работали, задача в том, чтоб они просто асинхронно работали. Может тут подойдёт event-based программирование ...
0
Почетный модератор
Эксперт С++
 Аватар для SatanaXIII
5851 / 2862 / 392
Регистрация: 01.11.2011
Сообщений: 6,906
18.11.2014, 16:33
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Конечно! Хотя и выполнять они будут достаточно ограниченный ряд примитивных задач
Прикиньте на бумажке как часто каждый поток сможет провернуть хоть одну свою инструкцию.
1
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.11.2014, 16:33
Каждому потоку нужен отдельный стек. Если мне не изменяет склероз, по умолчанию этот стек - один мегабайт. Возьми калькулятор и посчитай сколько это сожрет памяти. Короче, если нет уже упомянутого суперкомпьютера - не надо дурью маяться.
1
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
18.11.2014, 16:35
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Да в том то и дело, что нет.
Значит, и не должно быть таких решений. Асинхронная модель должная подойти. Как реализовать - зависит от конкретной решаемой задачи. Если это, например, обработка множества клиентов на сервере - см epoll.
1
654 / 575 / 164
Регистрация: 13.12.2012
Сообщений: 2,124
18.11.2014, 16:36
-THE_MASTER666-, по теме, предалагаю почитать про такое понятие как "пул потоков"
1
Заблокирован
18.11.2014, 16:41  [ТС]
Цитата Сообщение от Renji Посмотреть сообщение
Короче, если нет уже упомянутого суперкомпьютера
У меня его нет, но если понадобится - и такой закажу, бюджет не ограничен http://3dnews.ru/assets/extern... istory.png

Цитата Сообщение от aLarman Посмотреть сообщение
по теме, предалагаю почитать про такое понятие как "пул потоков"
Да я в курсе, что это.

Цитата Сообщение от SatanaXIII Посмотреть сообщение
Прикиньте на бумажке как часто каждый поток сможет провернуть хоть одну свою инструкцию.
Цитата Сообщение от 0x10 Посмотреть сообщение
Значит, и не должно быть таких решений.
Ладно, понял - идею в топку, буду дальше думать.
0
18.11.2014, 16:43

Не по теме:

Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Ладно, понял - идею в топку, буду дальше думать.
Если б мне вообще пришла в голову мысль, что для решения моей задачи нужно over 1000000 потоков, я бы сразу подумал, что тут что-то не так :)

0
Заблокирован
18.11.2014, 16:53  [ТС]
Так, хорошо, а может кто - то что - то предложит
Есть набор из множества блочков разного кода С++, который на каждой итерации цикла желательно выполнить параллельно. Для всех блоков есть общая память.

Изначально думал запускать каждый блочок кода в отдельном потоке и чтоб он там всегда вертелся в своём лупе, но тогда загрузка проца всегда будет 100%.

Потом подумал в сторону EVENT - BASED стиля, чтоб потоки создавались и выполнялись по событиям, то есть когда надо выполнить 1000 потоков с разным исполняемым кодом - выполняю их в 1000 разных потоках. Но операция создания потока - очень дорогостоящая и создание даже 1000-и потоков будет занимать относительно много времени...

Может кто подкинет идейку?
То есть что у нас есть:
1. Множество наборов разного кода С++, подгружаемых в главный софт в рантайме при старте (допустим из DLL)
2. Общая память для них.
3. Нужно выполнят выполнять все эти наборы кода паралельно и желательно, чтоб они всё время выполнялись ...

Если б набор кода был одинаков для всех блоков, я б не парился и на CUDA бы сразу перекинул
0
3258 / 2060 / 351
Регистрация: 24.11.2012
Сообщений: 4,909
18.11.2014, 16:57
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Но операция создания потока - очень дорогостоящая и создание даже 1000-и потоков будет занимать относительно много времени
К этому и был упомянут пул потоков.

Добавлено через 2 минуты
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Есть набор из множества блочков разного кода С++, который на каждой итерации цикла желательно выполнить параллельно. Для всех блоков есть общая память.
Страшное это дело. Разный код, который выполняется с общими данными...
Если данные только на чтение - все равно. Если предполагается модификация, то начинаются блокировки и прочие радости.

Классика: заводим очередь задач. Помещаем в нее задачи на выполнение. Создаем пул потоков. По мере освобождения потоков извлекаем очередную задачу из очереди и передаем на выполнение.
2
2784 / 1937 / 570
Регистрация: 05.06.2014
Сообщений: 5,602
18.11.2014, 18:44
Цитата Сообщение от -THE_MASTER666- Посмотреть сообщение
Нужно выполнят выполнять все эти наборы кода паралельно и желательно, чтоб они всё время выполнялись ...
Параллельно выполняется столько процессов, сколько ядер в процессоре. Все сверх этого - эмуляция вида "миллисекунду выполняли процесс А, тормознули его. Миллисекунду выполняли процесс Б, тормознули его...". В некоторых задачах оно удобно, но что-то мне подсказывает что это не ваш случай.
0
Evg
Эксперт CАвтор FAQ
 Аватар для Evg
21281 / 8305 / 637
Регистрация: 30.03.2009
Сообщений: 22,660
Записей в блоге: 30
18.11.2014, 18:51
Реальной параллельности при исполнении миллиона потоков, как выше заметил коллега, не будет. Поэтому, грубо говоря, нужно организовать 10 потоков, каждый из которых выполняет по 100 тыщ добрых дел, и при этом дополнительно иммитировать, как будто бы исполнение всех добрых дел прошло параллельно
0
Заблокирован
18.11.2014, 19:18  [ТС]
Цитата Сообщение от Evg Посмотреть сообщение
Реальной параллельности при исполнении миллиона потоков, как выше заметил коллега, не будет.
Ну это и уже понятно, по этому я и не стал комментировать выше сказанное.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
18.11.2014, 19:18
Помогаю со студенческими работами здесь

Создать массив чисел из диапазона [-100;100] размером 180 000. Вывести на экран. Найти время выполнения программы
Создать одномерный массив вещественных чисел из диапазона размером 180 000. Вывести на экран. Найти время выполнения программы через...

Как переделать программу, чтобы время ее выполнения было <1.000 sec?
Как переделать программу, чтобы время ее выполнения было &lt;1.000 sec. Например, при T=1 и a=81325 b=114026 c=13278 d=107135 через...

Создать массив из 1 000 000 000 и более элементов, а потом заполнить и вывести его
создаю массив, и все идет нормально #include &lt;stdio.h&gt; #include &lt;malloc.h&gt; #include &lt;stdlib.h&gt; int main(void) ...

Как создать 1 000 000 строк без совпадений?
помогите дорогие друзья!!! как создать 1 000 000 строк без совпадений? делаю так private void button1_Click(object sender, EventArgs e)...

Игровой ПК до 4 000 грн (12 000 -13 000 рублей)
Материнская плата Asus M5A78L-M LX3 Процессор AMD FX-4300 Память Kingston DDR3-1866 4096MB PC3-14900 HyperX х2 Блок питания Chieftec...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru