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

Вниз

Безопасная загрузка библиотеки.   Найти похожие ветки 

 
Riply ©   (2007-12-21 19:56) [0]

Здравствуйте !
Вот выяснилось, что не умею работать с GetModuleHandleEx.
В Help`е написано:
"If dwFlags contains GET_MODULE_HANDLE_EX_UNCHANGED_REFCOUNT, this function
must be used carefully in a multithreaded application."

Это как понимать ? Неужели они хотят сказать,
что если не использовать флаг GET_MODULE_HANDLE_EX_UNCHANGED_REFCOUNT,
то GetModuleHandleEx можно использовать "не аккуратно", или я "смотрю в книжку, а вижу ..." ?  
:)


 
Германн ©   (2007-12-21 19:58) [1]


> не аккуратно

Ты просто "передергиваешь".


 
Riply ©   (2007-12-21 20:01) [2]

> [1] Германн ©   (21.12.07 19:58)
> Ты просто "передергиваешь".

Где это "передергиваешь" ?
Из каких соображений оговорено условие: "If dwFlags contains " ?


 
Германн ©   (2007-12-21 20:03) [3]


> Где это "передергиваешь" ?

В применении оператора NOT к словам must be used carefully.


 
Riply ©   (2007-12-21 20:05) [4]

> [3] Германн ©   (21.12.07 20:03)
> В применении оператора NOT к словам must be used carefully.

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


 
guav ©   (2007-12-21 20:55) [5]

Они просто намекают, что если в другом треде вызовут FreeLibrary, то может получится хендл, который уже не валидный, без видимых вызовов FreeLibrary в вызывающем GetModuleHandleEx.
Предупреждение уместное.


 
Riply ©   (2007-12-21 21:09) [6]

> [5] guav ©   (21.12.07 20:55)
> Предупреждение уместное.

То что оно уместное это понятно. Вопрос был в том, почему оно (предупреждение),
сделано только для флага GET_MODULE_HANDLE_EX_UNCHANGED_REFCOUNT.
Неужели без него я не могу попасть в неприятную ситуацию, связанную с "борьбой" нитей ?


 
guav ©   (2007-12-21 21:17) [7]

> [6] Riply ©   (21.12.07 21:09)

Подсчёт ссылок потокобезопасен, причём не только здесь, но и почти всегда он реализован потокобезопасно. Ну то есть через InterlockedIncrement / InterlockedDecrement или аналоги.
Соответственно при использовании рефкаунтинга у тебя либо валидный хендл либо ошибка, race condition при одновременном FreeLibrary из другой нити не будет.


 
Riply ©   (2007-12-21 21:47) [8]

> [7] guav ©   (21.12.07 21:17)
> Соответственно при использовании рефкаунтинга у тебя либо валидный хендл либо ошибка,
> race condition при одновременном FreeLibrary из другой нити не будет.

Спасибо :)



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

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

Наверх




Память: 0.48 MB
Время: 0.016 c
2-1197995133
Виктор
2007-12-18 19:25
2008.01.20
Сворачивание окна


3-1189449856
DiX
2007-09-10 22:44
2008.01.20
Как правильно работать с TClientDataSet?


2-1198415884
Artem
2007-12-23 16:18
2008.01.20
Как заставить работать TAnimate (воспроизводить gif-файлы)


2-1197896157
niKo
2007-12-17 15:55
2008.01.20
общие ресурсы


15-1196834343
vajo
2007-12-05 08:59
2008.01.20
Можно как-то вычислить, кто в сети сообщения аськи прослушивает?