Главная страница
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.023 c
15-1180093377
DVM
2007-05-25 15:42
2007.06.24
Есть ли хорошие готовые компоненты для SIP телефонии?


2-1179403094
kubatura
2007-05-17 15:58
2007.06.24
игнорирование регистра в запросе


15-1180154708
Артем444
2007-05-26 08:45
2007.06.24
статьи


2-1180736356
Ламер 2.ХХ
2007-06-02 02:19
2007.06.24
ПК в сети


2-1180717499
Malik
2007-06-01 21:04
2007.06.24
Неразбериха с SavePictureDialog.