powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с malloc в shared library, gcc, linux
8 сообщений из 58, страница 3 из 3
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39287804
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrej_f
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
2.
В потоках нельзя использовать неинициализированные переменные вне функций:
	такие переменные являются глобальными и при первой инипциализации под них выделяется память
	в общем адресном пространстве программы, но блоками по несколько мегобайт:
	static __thread int a = 0;        // можно
	static __thread char *b = NULL;  // нельзя
	static __thread char c[512];     // нельзя



выделение памяти под int ничем не отличается от выделения памяти под char*

в C++11 есть thread_local переменные
http://en.cppreference.com/w/cpp/keyword/thread_local
наверно ими нужно пользоваться
static __thread наверно то же самое, в ассемблерный листинг посмотреть лень, там видно такие вещи
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39287806
Фотография Новый Год
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrej_f
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
да, взятый прямо из man код примера установки размера стека для потока
(man pthread_create (http://man7.org/linux/man-pages/man3/pthread_create.3.html))
работает очень хорошо, но при этом выход из потока, не важно через pthread_exit или 
return не уничтожает стек автоматически, его теперь надо уничтожать вручную с помощью free.
Это означает, что detached потоки будут отжтрать память не возвращая её системе.
Передать указатель на стек в такой поток можно, но попытка применить к нему free
из этого потока вызывает крах системы.
Т.е. потоки с регулирыемым стеком не могут быть detached.



по-моему, ты путаешь stack и heap
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39287823
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Судя по всему, ТС как Дон Кихот сражался с меньницами и победил их.
Я рад.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39288093
Andrej_f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годмне кажется, что многое из этого не правильноДа, я то же по учебнику делал сначала.
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39288096
Andrej_f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годпопробуй подставить вместо 100 переменную, очень удивишься
gcc позволяет создавать массивы переменной длины, если явно их не запретитьЧему удивлюсь? Вы думаете, я этого не знал?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39288110
Andrej_f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новый Годпо-моему, ты путаешь stack и heapДа вроде нет.
Каждый новый поток создается со стеком, размер которого по умолчанию определен системой, посмотреть можно ulimit -s, в моём случае это 8МБ.
С помощью pthread_attr_setstacksize можно задать свой размер стека (а на с помощью pthread_attr_setstacksize, как пишут во многих местах).
Если у меня 100 потоков, каждый отъест 8МБ для стека.
Что я напутал?
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39288114
Andrej_f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrej_fС помощью pthread_attr_setstacksize можно задать свой размер стека (а на с помощью pthread_attr_setstacksize, как пишут во многих местах)Упс, ошибочка, читать так:
С помощью pthread_attr_setstack можно задать свой размер стека (а не с помощью pthread_attr_setstacksize, как пишут во многих местах)
...
Рейтинг: 0 / 0
Помогите, пожалуйста, с malloc в shared library, gcc, linux
    #39288118
Andrej_f
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
MasterZivСудя по всему, ТС как Дон Кихот сражался с меньницами и победил их.
Я рад.Ну раз все рады, то и я рад.
Возможно, я боролся с мельницами, и даже весьма вероятно, ибо это первая моя программа под линукс и первое знакомство с gcc.
Главное, что я удовлетворён, тем, что мой демон в работе показывает 250 МБ VIRT и 5932 RES со всеми своими потоками, а не гигабайты, как было раньше. Я так сплю спокойней, ибо серверок мой, а не дядин, и на нем всего 18 ГБ памяти, а задач крутится не мало.
...
Рейтинг: 0 / 0
8 сообщений из 58, страница 3 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / Помогите, пожалуйста, с malloc в shared library, gcc, linux
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]