| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C++ Builder > Проблема с памятью ( CreateThread?) |
| Автор: xykapec 31.1.2008, 14:44 |
| Всем доброго времени суток. В общем, у меня есть програмка написаная так чтобы можно было компилировать и в 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 в качестве вознаграждения. Большое Спасибо! |
| Автор: xvr 31.1.2008, 15:11 | ||
Во первых, причем тут Borland C++? Что касается памяти, то в Linux (в отличии от Windows) все thread'ы создаются как отдельные процессы (однако память у них общая), так что суммарное потребление памяти, как сумма по процессам, будет возрастать с каждым новым thread'ом (10 thread'ов даст 10ти кратное возрастание), однако реального увеличения потребления памяти не происходит, т.к. все эти процессы ФИЗИЧЕСКИ используют одну и ту же память. В Windows все подругому - там thread'ы реально живут в одном процессе. |
| Автор: xykapec 31.1.2008, 15:16 |
| xvr, Я же говорю - хреново соображаю в програмировании. Чтобы скомпилировать код програмки под windows нужен Borland C++ 5. Вот Я не смогу тебе ничего ответить на уровне У меня есть немного денег и проблема. Я хочу за деньги решить эту проблему. |
| Автор: xvr 31.1.2008, 21:50 | ||
Решение проблем за деньги - это не ко мне |
| Автор: xykapec 1.2.2008, 11:30 |
Спасибо за ответ. Проблема решена. |