-
Являются ли функции GetMem/FreeMem в Lazarus под Linux потоконезависимыми?
Или их нужно обернуть в мьютекс?
-
А зачем их в поток вставлять? Инициализируйте до запуска потоков.
-
Сервер будет работать на слабой машине. Не каждому клиенту может потребоваться много памяти. Какому именно клиенту память потребуется заранее не известно. Если всем клиентам заранее выделить память с запасом, то ресурсов сервера не хватит.
-
Являются
-
Спасибо за конкретный ответ.
Но могу ли я поверить на слово? Может есть какие пруфы?
Хочу предупредить, прога-сервер будет работать как служба(или как там в Линуксе это называется, демон или как-то так), многопоточность в целом никак специально не инициируется, стандартные классы для работы с потоками не используются, модули типа cthreads и т.п. не включены, пользуюсь только низкоуровневыми pthread_create ..
-
интересно вот мне,
а почему ты ты такой озабоченный паришься о потокобезопасности только гетмема.
типа другая память рапределенная не тобой и не через гетмем - это безопасно,
а вот гетмемная - это уже надо запариться на тему
-
У меня в основном статические переменные, все динамические переменные и фиксированные куски памяти у меня заранее выделяются в одном потоке.
-
> rrrrr
> ...
> а вот гетмемная - это уже надо запариться на тему
Так я собственно поэтому и спрашиваю.
Т.е. если многопоточность в целом никаким специальным способом не инициировать, то возможны ли проблемы с динамическим выделением памяти?
.. переменные у меня в основном локальные статик и внутри функций.
-
"инициировать" хм, имелось в виду "инициализировать"
-
Что такое потоконезависимость?
> Сервер будет работать на слабой машине. Не каждому клиенту
> может потребоваться много памяти. Какому именно клиенту
> память потребуется заранее не известно. Если всем клиентам
> заранее выделить память с запасом, то ресурсов сервера не
> хватит.
Неправильная архитектура.
> Игорь Шевченко © (28.07.17 13:50) [3]
Смешно. Правда смешно. ;)
-
> Pavia © (30.07.17 16:32) [9]
> Неправильная архитектура.
А что не так?
-
> А что не так?
А что так?
Что хорошего в анархии так? Децентрализованная система управления чревата следующими проблемами:
- дефрагментация памяти(как следствие исчерпания памяти);
- гонка процессоров(дедлоки);
- проблема обедающих философов(проблемы синхронизации).
Возьмите централизованную модель управления генерал-подчинённый или начальник-подчинённый и эти проблемы уходят сами собой.
Начальник может так же называться по другому как диспетчера или менеджера.
Бывает некоторый процент задач где нельзя обойтись. Но в большинстве случаев это кривая архитектура. Когда героически решают эти проблемы.
Собственными менеджерами памяти: уменьшение доступной памяти в число раз равному количество потоков. Снижение производительности за счёт использования сложных механизмов синхронизации.
А гонку процессов предпочитают замалчивать, так как теорий не владеют и бояться использовать карусель. А так как эта ошибка плавающая, то в принципе прокатывает любое решение. Чем народ и пользуется.
-
> Pavia © (30.07.17 18:10) [11]
> Возьмите централизованную модель управления ...
> ... и эти проблемы уходят сами собой.
Да. Но почему Вы решили, что в сабже ДЕцентрализованная модель? Насколько я понял, она именно централизованная.
1. Есть главный поток, на вход которого поступают некие задачи
2. Получив задачу, главный поток порождает поток задачи и отдает ему поступившую задачу на выполнение, а сам ждет следующую задачу.
3. Поток задачи сам управляет своими ресурсами, а по завершению очищает их и умирает сам.
По-моему, там именно такая схема, а ТС спрашивает лишь о том, надо ли синхронизировать выделение памяти в потоках задач, или оно уже и без того потокобезопасное?
> сабж
Я бы синхронизировал. Для гарантии. А еще подумал бы о пуле потоков.
-
> Pavia © (30.07.17 16:32) [9]
> Что такое потоконезависимость?
Как я понял, правильный устоявшийся термин - "потокобезопасность", спасибо что поправили. Надеюсь все поняли о чем речь.
> Юрий Зотов © (30.07.17 20:22) [12]
Да, примерно так все и есть, Вы прям телепат. Последую Вашему совету, благо конкретно в моем случае синхронизация на производительность не повлияет, и это всего пару строчек дописать.
> Игорь Шевченко © (28.07.17 13:50) [3]
При всем уважении.