1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81

Создание потоков.

04.08.2010, 12:53. Показов 6056. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Возникла необходимость создать в программе то количество потоков, какое выбрал пользователей.
И запустить их все сразу. Я думаю нужно создать динамический массив из потоков, но как это сделать.
Кому не сложно покажите готовый пример или наведите на мысль.
P.S: Код во всех потоках будет один и тот же.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.08.2010, 12:53
Ответы с готовыми решениями:

Создание потоков
Всем доброго времени суток. Как всегда, последняя надежда на этот сайт. Сразу к делу: Написать программу, которая принимает в качестве...

Создание и завершение процессов и потоков. Приоритеты выполнения потоков
Здравствуйте. Буду очень раз если поможете понять,что конкретно нужно сделать в вот этом задании,пока особого представления о...

Создание потоков
Привет всем. Есть программа в которой количество используемых потоков должно определятся непосредственно в процессе работы. Можно ли...

9
 Аватар для Sekt
159 / 156 / 47
Регистрация: 29.04.2009
Сообщений: 636
04.08.2010, 14:03
в Библиотеках Poco есть ThreadPool одна из сигнатур указывает кол-во потоков и макс кол-во потоков.В linux должно быть что то похожее.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 14:27
Цитата Сообщение от Sekt Посмотреть сообщение
в Библиотеках Poco есть ThreadPool
хз что там есть, но не вижу ни единого смысла таскать с собой стороннюю либу

Цитата Сообщение от Sekt Посмотреть сообщение
В linux должно быть что то похожее.
простите, конечно... но что общего у библиотеки и linux?

hromjo, что в коде можно использовать, какие сторонние библиотеки, или ничего стороннего? код должен работать только под линукс, без кроссплатформености?
0
1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81
04.08.2010, 16:55  [ТС]
Вобще код должен работать под linux, но в будущем возможно возьмусь переносить под окошки.
Мне нужно чтоб всего одна функция работала во много потоках.
К примеру есть функция int foo(); и эту функцию необходимо запустить во всех потоках, количество которых ввел юзер.
Возможно можно создать динамический массив потоков? Ну или как-то по другому.

Потоки должны работать как-то так:
inf f00(){код}
поток_1
{
foo()
\\При каком то условии в foo все потоки остановятся...
}

поток_2
{
foo()
\\При каком то условии в foo все потоки остановятся...
}

И так до того количества потоков, сколько захочет пользователь.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 17:06
если компилятор не самый старый, то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
#include <thread>
 
int foo() {
   std::cout << "from thread" << std::endl;
   return 0;
}
 
int main() {
   for ( int idx = 0; idx < 2; ++idx ) {
      new std::thread(foo);
   }
   return 0;
}
будет работать на всех платформах.
иначе писать обертку, разделяемую препроцессором. или стороннюю либу.

потестить можно тут: http://liveworkspace.org/code/... c59294991a

Добавлено через 2 минуты
Цитата Сообщение от hromjo Посмотреть сообщение
При каком то условии в foo все потоки остановятся
потоки не могут останавливаться. это системнозависимо.
ты можешь использовать мьютекс. и реализовать функцию foo() так, чтоб она проверяла общий мьютекс.
1
1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81
04.08.2010, 21:12  [ТС]
Большое спасибо!

Добавлено через 3 часа 28 минут
Тогда можно еще вопрос по этому поводу.
При компиляции программы выводится ошибка:

/usr/include/c++/4.4/c++0x_warning.h:31:2: error: #error This file requires compiler and library support for the upcoming ISO C++ standard, C++0x. This support is currently experimental, and must be enabled with the -std=c++0x or -std=gnu++0x compiler options.

Хотя компилятор сказал вполне много, у меня все же не получается подключить -std=c++0x, если честно я не знаю как
Пользуюсь NetBeans, нашел во вкладке Make Option, не знаю, то ли. Но при вводе в поле -std=c++0x пишет что вобще что то там не правильно объявил.
Как я понимаю нужно как-то подключить это в makefile, но не нашел как.
Возможно задача тривиальная, но как сказал в инете это не нашел, да и инфы на c++0x не так уж много.
Прошу знающих людей объяснить что к чему.
А и еще забыл сказать, компилятор g++ 4.4.3, если это поможет.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 21:31
что такое NetBeans, я не в курсе.
вам нужно к опциям компилятора добавить "-std=c++0x"
0
1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81
04.08.2010, 21:55  [ТС]
NetBeans - это IDE.
0
Эксперт С++
 Аватар для niXman
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 22:03
Цитата Сообщение от hromjo Посмотреть сообщение
NetBeans - это IDE.

Не по теме:

буду знать..
но хотя, если за несколько лет программирования не слышал о таком, значит ничего для_себя стоящего в ней не нашел.

0
Эксперт С++
 Аватар для Andrew_Lvov
261 / 191 / 10
Регистрация: 19.08.2010
Сообщений: 760
Записей в блоге: 1
22.08.2010, 10:50
http://man.yolinux.com/cgi-bin... ead_create
Можете создавать поток этой функцией, она не требует нового стандарта С++. Описание и инклуд по ссылке.

По поводу
вам нужно к опциям компилятора добавить "-std=c++0x"
Добавьте в строку с make следующее
Code
1
СС="gcc -std=c++0x"
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
22.08.2010, 10:50
Помогаю со студенческими работами здесь

Создание потоков
Написать программу, которая принимает в качестве параметров набор имен файлов данных (произвольное число) и запускает все файлы на...

Создание потоков
Всем привет)) Совсем недавно начал изучать WinAPI и еще плохо разбираюсь что к чему. Так вот предо мной возникла такая задача: нужно...

Создание потоков
Напишите программу, которая создает поток. Используйте атрибуты по умолчанию. Родительский и вновь созданный поток должны распечатать...

Создание потоков
Здравствуйте, я создал два потока, но не знаю, как можно проверить, точно ли я их создал и точно ли всё выполняется в отдельном потоке, а...

Создание потоков
Нужно написать программу, которая порождает 2 потока. Один записывает информацию в именованный канал, а второй читает её оттуда. Вроде...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Опции темы

Новые блоги и статьи
Контроль уникальности заводского номера - вариант №2
Maks 24.03.2026
В отличие от предыдущего варианта добавлено прерывание циклов, также добавлены новые переменные для сохранения контекста ошибки перед прерыванием цикла: Процедура ПередЗаписью(Отказ, РежимЗаписи,. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера - вариант №1
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа. В качестве фильтра для отбора справочника служит группа номенклатуры. Отбор по наименованию группы. . .
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru