Форум программистов, компьютерный форум, киберфорум
Boost C++
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
1

boost thread есть много памяти

27.07.2011, 10:50. Показов 1674. Ответов 5
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть небольшой код

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <boost/thread/thread.hpp>
#include <boost/thread/mutex.hpp>
 
using namespace std;
 
void startThreadClient(int value){
    return;
}
 
int main(int argc, char ** argv){
    boost::thread_group thrds;
 
    for (int i=0;i<200;i++){
        thrds.create_thread(boost::bind(&startThreadClient,0));
    }
    sleep(10000);
    return 0;
}
собираю так
g++ ./testThread.cpp -lboost_thread-mt -o testThread
Запускаю, смотрю top
5860 myuser 20 0 1604m 1896 872 S 0 0.0 0:00.00 1.6g testThread


Почему так много памяти съедается ? Ну ладно съедается, но почему не освобождается, ведь в потоках ничего не делается, сразу return.

-------
OS: linux mandriva
kernel: 2.6.29.1-server-4mnb
libboost: 1.38
gcc: 4.3.2
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
27.07.2011, 10:50
Ответы с готовыми решениями:

boost::thread
Здравствуйте. Есть два класса. Членом первого из классов является объект второго класса. В первом...

Boost thread
Здравствуйте! Помогите разобраться пожалуйста. Задача будет заключаться в том чтобы, создать поток...

queue boost thread
#define BOOST_THREAD_VERSION 2 #include &lt;boost/thread/thread.hpp&gt; #include...

Не линкуется проект с boost::thread
Здравствуйте! Пытаюсь собрать проект в Code::Blocks на Ubuntu. В проекте используется библиотека...

5
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
27.07.2011, 14:28 2
размер стека потока у меня по умолчанию 8мб.

Добавлено через 1 минуту
Цитата Сообщение от admsasha Посмотреть сообщение
1.6g
что это такое?
у меня память по нулям. а предпоследней колонка отображает процент использования памяти.
1
28 / 27 / 7
Регистрация: 11.06.2011
Сообщений: 387
27.07.2011, 16:07  [ТС] 3
Цитата Сообщение от niXman Посмотреть сообщение
что это такое?
это swap
0
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
07.08.2011, 22:01 4
Вопрос: а так принципиально с boost или <pthread.h> подойдет для вашей задачи?
В <pthread.h> есть функция pthread_detach(&pthread_t) которая автоматически освободит память от потока! возможно в boost есть что то подобное!
0
Эксперт С++
3211 / 1459 / 74
Регистрация: 09.08.2009
Сообщений: 3,441
Записей в блоге: 2
07.08.2011, 22:17 5
Цитата Сообщение от pomkalk Посмотреть сообщение
В <pthread.h> есть функция pthread_detach(&pthread_t) которая автоматически освободит память от потока! возможно в boost есть что то подобное!
boost::thread в деструкторе выполняет detach.

boost::thread_group содержит в себе список трэдов. и по завершении трэдов, элементы в списке не освобождаются. а происходит это потому, что boost::thread_group - не трэд пул! с чем его частенько путают.

а вот почему не освобождается память потоков - это вопрос.. нужно будет поковыряться...

Добавлено через 7 минут
вообще, по всяким форумам и спискам рассылки boost, Anthony Williams(автор boost.thread), частенько повторяет, что boost::thread_group стОит использовать только если кол-во его итемов неизменно на протяжении работы всей программы. или же, объекты boost::thread_group создаются/удаляются пользователем динамически. и дополняет, что boost::thread_group - вообще подумывает исключить, т.к. у многих возникают с ним проблемы из-за неочевидности его поведения.
кстати, именно по этой причине его исключили из нового стандарта.
2
365 / 247 / 24
Регистрация: 03.04.2011
Сообщений: 558
Записей в блоге: 1
07.08.2011, 22:19 6
Понятно!
0
07.08.2011, 22:19
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.08.2011, 22:19
Помогаю со студенческими работами здесь

boost::thread синхронизация с VCL
Здравствуйте, подскажите, как работать с VCL компонентами из boost::thread потока

boost::thread объясните нубу
Есть код #include &lt;boost/thread/thread.hpp&gt; #include &lt;iostream&gt; #include &lt;windows.h&gt; using...

Исключения в потоке Boost::thread
Имеется функция, которая вызывается в потоке. Внутри функции есть try-catch. Вне потока, если...

boost::thread() проблема с потоками.
Собственно создается два потока и запускаются следующим образом int main(). { ...

Работа с двумя потоками boost::thread
Есть следующий рабочий код: while (...) { ... th_end = ptr + (size_level - ptr)/2;...

boost::thread не может найти библиотеку
добрый день, сейчас изучаю boost и потоки в том числе. но постоянно выдает следующую ошибку: ...


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

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