| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > boost thread есть много памяти |
| Автор: admsasha 27.7.2011, 09:46 | ||||
Есть небольшой код
собираю так
Запускаю, смотрю 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 |
| Автор: boostcoder 27.7.2011, 11:09 |
| для 200 потоков это не много. но вот зачем вам 200 потоков?! рассказывайте задачу. boost.thread - всего лишь обертка над pthreads. никакого оверхеда он не вносит. |
| Автор: admsasha 27.7.2011, 11:25 |
| Вообще есть проект который берет из базы данные и производит над ними действия. Т.к. время на один просчет тратиться не малое и таких расчетов не мало, хотел провести расчеты в потоках. Т.к. с потоками еще не связывался, написал вот такой пример. И очень был удивлен. Тот же самый пример под windows занимает в памяти 3500KB когда потоки запущены и 1000KB когда все потоки закончили свою деятельность (ставил в startThreadClient sleep). Не может быть, что в windows с этим лучше 200 взято от балды, проверить как будет работать. |
| Автор: boostcoder 27.7.2011, 11:31 |
| у меня виртуальной памяти тоже резервируется 1600мб. но реальной - 0мб. так и должно быть. это первое. второе - sleep нужно вставлять в функцию потока, т.к. в текущем исполнении потоки завершаются сразу после создания. третье - программам мониторам никогда не верил. они постоянно какой-то бред показывают Добавлено через 3 минуты и 23 секунды и перестань использовать boost::thread_group там, где периодически создаешь потоки. скажи версию boost`а. |
| Автор: boostcoder 27.7.2011, 11:37 | ||||
а у тебя реально 200 ядер?
а разве вендус отображает объем резервированного виртуального адресного пространства? Добавлено через 2 минуты и 42 секунды покажи скрин консоли. это не память! профайлеру |
| Автор: admsasha 27.7.2011, 11:42 | ||
Я же написал, что 200 вставил от балды. Для пробы. Там 99% времени занимает ожидание отклика от внешних устройств (~500 железок) Так что кол-во ядер, я думаю, не причем.
|
| Автор: boostcoder 27.7.2011, 12:57 |
| нет у меня венды. но насколько я помню, в каких-то вендах давненько такого еще не было.. |