Форум программистов, компьютерный форум, киберфорум
C/С++ под Linux
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.59/29: Рейтинг темы: голосов - 29, средняя оценка - 4.59
1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81

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

04.08.2010, 12:53. Показов 6050. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru