Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, что вопрос не совсем про дельфи, но я не знаю куда его засунуть, а использую я сабж. Есть приложение, которое использует Shared Memory через Mapped File. Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. Простейший подход: хранить там же счётчик и изменять его - мне не нравится, т.к. если приложение будет убито через диспетчер задач, например, то вся цепочка навернётся. Отсюда появилась идея и вопрос: можно ли как-то узнать сколько раз открыт хэндл на эту область памяти?.. Ведь при уничтожении приложения оперционная система его автоматически закрывает AFAIK?.. Открывается оно как-то так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 17:20 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvp Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. alekcvp можно ли как-то узнать сколько раз открыт хэндл на эту область памяти? alekcvp Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 17:35 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. _Vasilisk_ alekcvp можно ли как-то узнать сколько раз открыт хэндл на эту область памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 18:02 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvpПроблема: как узнать что он больше не нужен ни одному экземпляру приложения?.. Счётчик ссылок, защищённый мутексом. И да, придётся позаботиться чтобы в защищённом куске кода не было ничего, способного "навернуть приложение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 18:53 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpПроблема: как узнать что он больше не нужен ни одному экземпляру приложения?.. Счётчик ссылок, защищённый мутексом. И да, придётся позаботиться чтобы в защищённом куске кода не было ничего, способного "навернуть приложение". Хм... точно, можно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Спасибо за идею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:06 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvpможно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Увы, но "был" совсем не гарантирует "всё ещё". Между созданием и очисткой вполне может вклиниться второе подключение, которое увидит грязную память. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:22 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpможно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Увы, но "был" совсем не гарантирует "всё ещё". Между созданием и очисткой вполне может вклиниться второе подключение, которое увидит грязную память. Но для этого ему придётся сначала создать или захватить этот мутекс самому. И он либо сможет это сделать, а значит память чистить не надо, либо нет, а значит она будет очищена. Этот же мутекс будет использоваться для синхронизации доступа к этой памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:36 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvp Проблема: как узнать что он больше не нужен ни одному экземпляру приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:59 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Когда все хэндлы закроются память сама очистится. Где-то гарантируется что именно очистится , а не просто пометится как свободная?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 20:05 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvpГде-то гарантируется что именно *очистится* Да: https://docs.microsoft.com/en-us/windows/win32/api/winbase/nf-winbase-createfilemappinga Не думаешь же ты, что вменяемый разработчик ОС позволит тебе получить доступ к грязным страницам свопа вместе с содержащимися там данными других приложений?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 20:25 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну да, в принципе наверное этого хватит, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 21:23 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40057240&tid=2037468]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 253ms |
| total: | 529ms |

| 0 / 0 |
