![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| admsasha |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Есть небольшой код
собираю так
Запускаю, смотрю 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 |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
для 200 потоков это не много.
но вот зачем вам 200 потоков?! рассказывайте задачу. boost.thread - всего лишь обертка над pthreads. никакого оверхеда он не вносит. |
|||
|
||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Вообще есть проект который берет из базы данные и производит над ними действия. Т.к. время на один просчет тратиться не малое и таких расчетов не мало, хотел провести расчеты в потоках.
Т.к. с потоками еще не связывался, написал вот такой пример. И очень был удивлен. Тот же самый пример под windows занимает в памяти 3500KB когда потоки запущены и 1000KB когда все потоки закончили свою деятельность (ставил в startThreadClient sleep). Не может быть, что в windows с этим лучше 200 взято от балды, проверить как будет работать. Это сообщение отредактировал(а) admsasha - 27.7.2011, 11:26 |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
у меня виртуальной памяти тоже резервируется 1600мб. но реальной - 0мб. так и должно быть. это первое.
второе - sleep нужно вставлять в функцию потока, т.к. в текущем исполнении потоки завершаются сразу после создания. третье - программам мониторам никогда не верил. они постоянно какой-то бред показывают Добавлено через 3 минуты и 23 секунды и перестань использовать boost::thread_group там, где периодически создаешь потоки. скажи версию boost`а. |
|||
|
||||
| admsasha |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
|
||||||
|
|||||||
| boostcoder |
|
||||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
а у тебя реально 200 ядер?
а разве вендус отображает объем резервированного виртуального адресного пространства? Добавлено через 2 минуты и 42 секунды покажи скрин консоли. это не память! профайлеру |
||||
|
|||||
| admsasha |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 763 Регистрация: 28.1.2005 Репутация: нет Всего: 6 |
Я же написал, что 200 вставил от балды. Для пробы. Там 99% времени занимает ожидание отклика от внешних устройств (~500 железок) Так что кол-во ядер, я думаю, не причем.
|
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 49 Всего: 110 |
нет у меня венды. но насколько я помню, в каких-то вендах давненько такого еще не было..
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |