Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.06.24;
Скачать: CL | DM;

Вниз

Динамическое выделение памяти в нитях   Найти похожие ветки 

 
SpellCaster   (2007-04-19 16:19) [0]

Как корректно реализовать сие? Прочитал у Рихтера, что выделять динамически небезопасно, поскольку возможен конфликт при обращении к куче.
Задача такая: надо выделить кусок памяти и передать его в основной поток. Как бы это провернуть? Крит.секции тут, наверно, не подойдут - или же придется оборачивать в них вообще все выделения памяти, включая основной поток. Всегда есть Synchronize, конечно, но, может, имеются какие-то многопоточные варианты системных функций, как в visual c. Или я зря парюсь?


 
Сергей М. ©   (2007-04-19 16:21) [1]


> SpellCaster   (19.04.07 16:19)


Читай в справке про "IsMultiThread variable".
До полного отупения либо полного просветления)


 
Сергей М. ©   (2007-04-19 16:25) [2]


> Прочитал у Рихтера, что выделять динамически небезопасно,
>  поскольку возможен конфликт при обращении к куче


Уж не знаю, что там пишет Рихтер, но штатный BMM в составе борландовских продуктов Борланд никому не навязывает. Да и мало ли потокобезопасных кучевых менеджеров существует на свете)


 
SpellCaster   (2007-04-19 20:04) [3]

> Да и мало ли потокобезопасных кучевых менеджеров существует
> на свете)

Хм... подскажи хоть один, а?


 
Сергей М. ©   (2007-04-20 08:29) [4]

Ну, к примеру, менеджер в составе msvcrt.dll


 
Leonid Troyanovsky ©   (2007-04-20 09:59) [5]


> SpellCaster   (19.04.07 16:19)  

> Как корректно реализовать сие? Прочитал у Рихтера, что выделять
> динамически небезопасно, поскольку возможен конфликт при
> обращении к куче.

А разве там не написано, как выделять безопасно?
Читай внимательней, возможно, на другой странице.

--
Regards, LVT.


 
SpellCaster   (2007-04-20 10:41) [6]

> [5] Leonid Troyanovsky ©   (20.04.07 09:59)
Там есть про локальную TLS, но мне-то нужно выделенную память передавать другим потокам. Про такой способ я пока ничего не нашёл.

> [4] Сергей М. ©   (20.04.07 08:29)
А есть пример его использования?

Почитал про IsMultiThread. Выходит, менеджер памяти автоматом переходит в режим многопоточности - и нечего париться?


 
Сергей М. ©   (2007-04-20 11:21) [7]


> Выходит, менеджер памяти автоматом переходит в режим многопоточности
> - и нечего париться?


Конечно)


 
Riply ©   (2007-04-20 11:41) [8]

>  [7] Сергей М. ©   (20.04.07 11:21)
>>Выходит, менеджер памяти автоматом переходит в режим многопоточности - и нечего париться?
> Конечно)
А в каких ситуациях "менеджер памяти автоматом переходит в режим многопоточности" ?
Например, при вызове BeginThread, а еще ?


 
SpellCaster   (2007-04-20 12:34) [9]

> Конечно)

Вот это славно =)


> А в каких ситуациях "менеджер памяти автоматом переходит
> в режим многопоточности" ?

Indicates whether the application spawned additional threads using BeginThread or TThread objects.


 
Leonid Troyanovsky ©   (2007-04-20 14:25) [10]


> SpellCaster   (20.04.07 10:41) [6]

> Там есть про локальную TLS, но мне-то нужно выделенную память
> передавать другим потокам. Про такой способ я пока ничего

Книги у меня под рукой нет, но, кажется мне, что обсуждение
проблемы c кучей идет, как раз в главе о синхронизации.

А по-поводу первого вопроса - VirtualAlloc c передачей
первичному потоку адреса распределенного.
Только, первичный поток и сам может с этим легко справиться.
Т.е., проблемы только в доступе к общей памяти из
разных потоков.
Синхронизация, синхронизация и синхронизация.

Кста, менеджер памяти при установленном IsMultithread
защищает свои данные критической секцией, никакой мистики.

--
Regards, LVT.


 
SpellCaster   (2007-04-23 15:09) [11]

> [10] Leonid Troyanovsky ©   (20.04.07 14:25)

Ясно.

Благодарю всех за помощь!



Страницы: 1 вся ветка

Текущий архив: 2007.06.24;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.021 c
15-1180294087
лол
2007-05-27 23:28
2007.06.24
есть аналог stat.yandex.ru у других поисковиков?


1-1177591470
melcor
2007-04-26 16:44
2007.06.24
idIRC работа через прокси?


8-1160133927
Korneley
2006-10-06 15:25
2007.06.24
Запись с одного источника в несколько звуковых потоков


9-1154277356
zoomer
2006-07-30 20:35
2007.06.24
Движок для гонок


15-1180081457
_uw_
2007-05-25 12:24
2007.06.24
Работа, которую нужно срочно выполнить