|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
|
Что делает CoLockObjectExternal?09.09.2020, 22:24. Показов 39576. Ответов 23
Метки нет (Все метки)
На MSDN описание совершенно непонятное. А Don Box вообще описывает это совершенно по-другому(и тоже непонятно).
Опираясь на описание из MSDN, я не понимаю, чем это отличается от AddRef. А уж тем более, как эта функция может каким-то волшебным образом "залочить" объект. Добавлено через 1 час 14 минут Если используете у себя эту функцию, прошу поделиться, для чего используете. Очень желаю понять назначение этой функции. Надеюсь гуру откликнутся.
0
|
|
| 09.09.2020, 22:24 | |
|
Ответы с готовыми решениями:
23
Не могу понять на что способен sort, и что делает его компаратор Что в программе делает так, что процессор грузится на 100%? Я не могу понять что делает данная программа. Точнее что делают функции используемые в это коде |
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.09.2020, 11:22 | ||
|
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
||
| 10.09.2020, 13:16 [ТС] | ||
|
Зачем ему это может быть нужно? И тоже интересно. Как это вообще? Вот падает процесс, или вызывается TerminateProcess, или даже просто закрывается единственное окно программы -- что дальше, кто будет RPC вызовы выполнять? Ведь подразумевается, что процесс нужно держать в памяти для какого-то другого процесса?
0
|
||
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
|
|
| 10.09.2020, 13:38 | |
|
Вот тут есть немного про эту функцию, может что прояснится: "Сущность технологии СОМ. Библиотека программиста". Пролистайте текст до вашей функции.
Я так понял, что это всё из области DCOM (Distributed COM) и как-то используется в контексте мониторинга за удалённым (от слова даль, а не удалить) объектом из стороннего процесса. Сам с этим не сталкивался, всё время использовал только объекты живущие в контексте приложения (CLSCTX_INPROC_SERVER), так что помощи от меня не много будет. Добавлено через 6 секунд Вот тут есть немного про эту функцию, может что прояснится: "Сущность технологии СОМ. Библиотека программиста". Пролистайте текст до вашей функции. Я так понял, что это всё из области DCOM (Distributed COM) и как-то используется в контексте мониторинга за удалённым (от слова даль, а не удалить) объектом из стороннего процесса. Сам с этим не сталкивался, всё время использовал только объекты живущие в контексте приложения (CLSCTX_INPROC_SERVER), так что помощи от меня не много будет.
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.09.2020, 16:31 | ||
|
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
|
| 10.09.2020, 16:49 [ТС] | |
|
0
|
|
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.09.2020, 16:56 | ||
|
Но, я тоже слабо в этом разбираюсь. Зачем тебе это вообще понадобилось? В большинстве случаев безо всего этого можно обойтись.
0
|
||
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
|
|
| 10.09.2020, 17:09 | |
|
---
0
|
|
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
||
| 10.09.2020, 17:11 [ТС] | ||
|
0
|
||
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
|
||
| 10.09.2020, 17:22 | ||
|
В DCOM инициатором создания серверного объекта может быть клиент. Шлётся запрос к серверу, сервер запускает процесс заглушку, который загружает DLL с нужным COM-объектом и создаёт его. Соответственно, если клиент отключится или релизнет объект, то на сервере процесс-заглушка удалит объект и сам выгрузится. Если это как-то так работает, то данная функция может предотвратить выгрузку серверного объекта при отключении от него клиентов.
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.09.2020, 17:44 | ||
|
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
|||
| 10.09.2020, 17:48 [ТС] | |||
AddRef плох?Еще CoLockObjectExternal используется в реализации IExternalConnection, но уже не для серверного объекта, а для некоторых других. Серверный объект тоже наследуется от IExternalConnection, но в AddConnection используется AddRef.
0
|
|||
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
|
||
| 10.09.2020, 18:31 | ||
|
Цитата от туда
Между администраторами заглушек и идентификационными единицами СОМ-объектов имеется взаимно однозначное соответствие. Каждый администратор заглушек ссылается на ровно один СОМ-объект. Каждый СОМ-объект, использующий стандартный маршалинг, будет иметь ровно один администратор заглушек. Администратор заглушек содержит но крайней мере одну неосвобожденную ссылку на объект, которая удерживает ресурсы объекта в памяти. В этом смысле администратор заглушек является еще одним внутрипроцессным клиентом для объекта. Администратор заглушек следит за числом неосвобожденных внешних ссылок и будет существовать до тех пор, пока где-либо в сети останется хотя бы одна неосвобожденная ссылка. Большинство внешних ссылок являются просто заместителями, хотя промежуточные маршалированные объектные ссылки могут удерживать заглушки, чтобы быть уверенными, что в момент создания первого заместителя объект еще существует. Когда неосвобожденные заместители или ссылки уничтожаются, администратор заглушек извещается об этом и декрементирует свой счетчик внешних ссылок. Если уничтожена последняя внешняя ссылка на администратор заглушек, то последний самоуничтожается, освобождая свои неосвобожденные ссылки на действующий объект. Это имитирует эффект наличия на стороне клиента ссылок, поддерживающих объект.
(возможно, дальше будет полёт моей фантазии и он не очень соответствует реальности) Как я понимаю, в некоторых случаях ваш объект получается размазан по нескольким местам. Во-первых, есть объект с вашей реализацией. Во-вторых, у пользователя объекта есть его прокси копия (заместитель). В-третьих, есть ещё заглушка, которая содержит в себе реальный объект с реализацией (1) и обеспечивает его взаимодействие с заместителями (2). Заместители и заглушки получаются автоматически, это не ваш код, а среда исполнения COM. AddRef вы можете сделать только из пользовательской программы или из реализации объекта. Вызов из пользовательской программы естественно увеличит счётчик и предотвратит выгрузку. Но вас интересует вызов из реализации, а он лишь выполнит увеличение локального счётчика ссылок. Администратор заглушек про него ничего знать не знает и ему на него по большому счёту плевать. У него свой счётчик, основанный на заместителях. Поэтому, когда последний заместитель вызовет релиз, администратор самоудалится вместе с объектом. Вот как раз что бы избежать этого, реализация может вызвать эту самую CoLockObjectExternal.
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
||
| 10.09.2020, 19:12 [ТС] | ||
|
0
|
||
|
2734 / 888 / 331
Регистрация: 10.02.2018
Сообщений: 2,102
|
||
| 10.09.2020, 19:40 | ||
|
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
||
| 10.09.2020, 20:05 [ТС] | ||
|
0
|
||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
||
| 10.09.2020, 20:18 | ||
|
Добавлено через 2 минуты Там по ссылке приведён пример с методами StartMonotor/StopMonitor. Эти методы могут вызываться один утром, второй завтра. Между вызовами ними никаких обращений к серверу не будет, т.е. система запросто может решить, что сервер не используется и его можно погасить.
0
|
||
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
|||
| 10.09.2020, 20:36 [ТС] | |||
|
0
|
|||
|
6772 / 4565 / 1844
Регистрация: 07.05.2019
Сообщений: 13,726
|
|
| 10.09.2020, 20:37 | |
|
0
|
|
|
19 / 29 / 13
Регистрация: 09.02.2016
Сообщений: 230
|
||
| 10.09.2020, 20:44 [ТС] | ||
|
Речь же идет о том, чтобы заменить вызов CoLockObjectExternal на AddRef, т.е. на сервере. CoLockObjectExternal можно же вызвать только на сервере(где объект был создан/обитает).
0
|
||
| 10.09.2020, 20:44 | |
|
Помогаю со студенческими работами здесь
20
что такое super.onCreate(savedInstanceState);? что оно делает? Какова вероятность того, что родители увидят, что сын делает уроки
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
| Опции темы | |
|
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога
Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
|
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога
Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
|
|
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога
Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
|
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
|
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога
В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
|
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|