![]() |
|
![]() ![]() ![]() |
|
xykapec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 31.1.2008 Репутация: нет Всего: нет |
Всем доброго времени суток.
В общем, у меня есть програмка написаная так чтобы можно было компилировать и в windows и в linux. Под windows програмка работает нормально, но вот в linux потребляет слишком много памяти. Програмка работает через потоки. Как я понял именно поток занимает слишком много памяти. Наприпер при 22 потоках она забивает 220мб. В windows при 140-ка потоках програмка знаимает 40мб максимум. Вот кусок кода ответсвенный за открытие нового потка: #ifndef WINDA void newthread(void* func, void* p) { pthread_t ThrId; pthread_attr_t tattr; pthread_attr_init(&tattr); pthread_attr_setdetachstate(&tattr, PTHREAD_CREATE_DETACHED); pthread_create(&ThrId, &tattr, func, p); pthread_attr_destroy(&tattr); //pthread_detach(ThrId); } #else void newthread(void* func, void* p) { CloseHandle( CreateThread( NULL, 0, (unsigned long (_stdcall*)())func, p, 0, NULL) ); } #endif Я не очень соображаю в программированнии, поэтому прошу Вашей помощи. Есть 20wmz в качестве вознаграждения. Большое Спасибо! Это сообщение отредактировал(а) xykapec - 1.2.2008, 11:32 |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Во первых, причем тут Borland C++? Что касается памяти, то в Linux (в отличии от Windows) все thread'ы создаются как отдельные процессы (однако память у них общая), так что суммарное потребление памяти, как сумма по процессам, будет возрастать с каждым новым thread'ом (10 thread'ов даст 10ти кратное возрастание), однако реального увеличения потребления памяти не происходит, т.к. все эти процессы ФИЗИЧЕСКИ используют одну и ту же память. В Windows все подругому - там thread'ы реально живут в одном процессе. |
|||
|
||||
xykapec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 31.1.2008 Репутация: нет Всего: нет |
xvr,
Я же говорю - хреново соображаю в програмировании. Чтобы скомпилировать код програмки под windows нужен Borland C++ 5. Вот ![]() Я не смогу тебе ничего ответить на уровне ![]() У меня есть немного денег и проблема. Я хочу за деньги решить эту проблему. ![]() |
|||
|
||||
xvr |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 48 Всего: 223 |
Решение проблем за деньги - это не ко мне ![]() |
|||
|
||||
xykapec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 31.1.2008 Репутация: нет Всего: нет |
![]() Спасибо за ответ. Проблема решена. |
|||
|
||||
![]() ![]() ![]() |
Правила форума "С++ Builder" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | C++ Builder | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |