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

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

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

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

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

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

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

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

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

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

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

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

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

И так до того количества потоков, сколько захочет пользователь.
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 17:06 5
если компилятор не самый старый, то так:
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  [ТС] 6
Большое спасибо!

Добавлено через 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
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 21:31 7
что такое NetBeans, я не в курсе.
вам нужно к опциям компилятора добавить "-std=c++0x"
0
1 / 1 / 1
Регистрация: 04.04.2010
Сообщений: 81
04.08.2010, 21:55  [ТС] 8
NetBeans - это IDE.
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
04.08.2010, 22:03 9
Цитата Сообщение от hromjo Посмотреть сообщение
NetBeans - это IDE.

Не по теме:

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

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

По поводу
вам нужно к опциям компилятора добавить "-std=c++0x"
Добавьте в строку с make следующее
Код
СС="gcc -std=c++0x"
0
22.08.2010, 10:50
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.08.2010, 10:50
Помогаю со студенческими работами здесь

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

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

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

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


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru