Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проблема с памятью ( CreateThread?), пожалуйста прочитайте 
:(
    Опции темы
xykapec
Дата 31.1.2008, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 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
PM MAIL   Вверх
xvr
Дата 31.1.2008, 15:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(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 в качестве вознаграждения. 
Если кто может помочь - я в icq 44-434-444.

Большое Спасибо!

Во первых, причем тут Borland C++?
Что касается памяти, то в Linux (в отличии от Windows) все thread'ы создаются как отдельные процессы (однако память у них общая), так что суммарное потребление памяти, как сумма по процессам, будет возрастать с каждым новым thread'ом (10 thread'ов даст 10ти кратное возрастание), однако реального увеличения потребления памяти не происходит, т.к. все эти процессы ФИЗИЧЕСКИ используют одну и ту же память. В Windows все подругому - там thread'ы реально живут в одном процессе.
PM MAIL   Вверх
xykapec
Дата 31.1.2008, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.1.2008

Репутация: нет
Всего: нет



xvr,
Я же говорю - хреново соображаю в програмировании.

Чтобы скомпилировать код програмки под windows нужен Borland C++ 5. Вот smile

Я не смогу тебе ничего ответить на уровнеsmile
У меня есть немного денег и проблема. Я хочу за деньги решить эту проблему.

smile Ты сможешь?
PM MAIL   Вверх
xvr
Дата 31.1.2008, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 48
Всего: 223



Цитата(xykapec @ 31.1.2008,  15:16)
У меня есть немного денег и проблема. Я хочу за деньги решить эту проблему.

smile Ты сможешь?

Решение проблем за деньги - это не ко мне  smile Но мне сдается, что проблемы нет - как меряли занимаемую память?

PM MAIL   Вверх
xykapec
Дата 1.2.2008, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 4
Регистрация: 31.1.2008

Репутация: нет
Всего: нет



smile
Спасибо за ответ. Проблема решена. 

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0637 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.