|
|
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, что вопрос не совсем про дельфи, но я не знаю куда его засунуть, а использую я сабж. Есть приложение, которое использует Shared Memory через Mapped File. Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. Простейший подход: хранить там же счётчик и изменять его - мне не нравится, т.к. если приложение будет убито через диспетчер задач, например, то вся цепочка навернётся. Отсюда появилась идея и вопрос: можно ли как-то узнать сколько раз открыт хэндл на эту область памяти?.. Ведь при уничтожении приложения оперционная система его автоматически закрывает AFAIK?.. Открывается оно как-то так: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 17:20:19 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvp Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. alekcvp можно ли как-то узнать сколько раз открыт хэндл на эту область памяти? alekcvp Код: pascal 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 17:35:50 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ alekcvp Хочется иметь возможно для того чтобы обнулить этот участок памяти при выполнении некоторого условия во всех экземплярах приложения. _Vasilisk_ alekcvp можно ли как-то узнать сколько раз открыт хэндл на эту область памяти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 18:02:18 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvpПроблема: как узнать что он больше не нужен ни одному экземпляру приложения?.. Счётчик ссылок, защищённый мутексом. И да, придётся позаботиться чтобы в защищённом куске кода не было ничего, способного "навернуть приложение". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 18:53:50 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpПроблема: как узнать что он больше не нужен ни одному экземпляру приложения?.. Счётчик ссылок, защищённый мутексом. И да, придётся позаботиться чтобы в защищённом куске кода не было ничего, способного "навернуть приложение". Хм... точно, можно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Спасибо за идею. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:06:03 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvpможно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Увы, но "был" совсем не гарантирует "всё ещё". Между созданием и очисткой вполне может вклиниться второе подключение, которое увидит грязную память. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:22:21 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpможно же при отключении закрыть хэндл мутекса и тут же пытаться его снова создать: если удастся - значит это был последний экземпляр. Увы, но "был" совсем не гарантирует "всё ещё". Между созданием и очисткой вполне может вклиниться второе подключение, которое увидит грязную память. Но для этого ему придётся сначала создать или захватить этот мутекс самому. И он либо сможет это сделать, а значит память чистить не надо, либо нет, а значит она будет очищена. Этот же мутекс будет использоваться для синхронизации доступа к этой памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:36:16 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
alekcvp Проблема: как узнать что он больше не нужен ни одному экземпляру приложения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 19:59:17 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Когда все хэндлы закроются память сама очистится. Где-то гарантируется что именно очистится , а не просто пометится как свободная?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 20:05:35 |
|
||
|
Количество открытых хэндлов 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:00 |
|
||
|
Количество открытых хэндлов Mapped File
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Ну да, в принципе наверное этого хватит, спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.03.2021, 21:23:22 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40057270&tid=2037468]: |
0ms |
get settings: |
20ms |
get forum list: |
27ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
67ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
98ms |
get tp. blocked users: |
3ms |
| others: | 346ms |
| total: | 595ms |

| 0 / 0 |
