|
|
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
День добрый. Есть ли в Дельфи компоненты, позволяющие работать с маппированными файлами. Желательно, наследники TFileStream ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 14:58 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Работа с такими файлами принципиально не укладывается в интерфейс TStream. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 15:03 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Мой гугл сразу выдал ссылку на https://torry.net/pages.php?id=228 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 15:06 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Работа с такими файлами принципиально не укладывается в интерфейс TStream. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 15:33 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_TIBBlobStream укладывается, а MMF нет BLOB - поток данных неизвестного размера, последовательно читаемый кусками. MMF - кусок данных заданного размера. Ничего общего. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 15:57 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Работа с такими файлами принципиально не укладывается в интерфейс TStream. Серьёзно?.. Я в своё время пытался прикрутить TSteam к MMF ради эксперимента, но за ненадобностью не доделал. Но ничего "принципиального" я там не вижу. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 16:18 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
alekcvp Dimitry Sibiryakov Работа с такими файлами принципиально не укладывается в интерфейс TStream. Серьёзно?.. сибиряков любит поумничать в то время, как существует пара десятков реализаций mmf поверх TStream ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 16:47 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
моя реализация, проверенная годами работы. На маке и линухе работает, на андроиде тоже. Проверок на права доступа к файлу и т.д. - тут нет, они делаются до этого момента. Первоначально где-то слизал, потом перепилил. Где - уже не вспомню, очень уж давно это было. P.S. Меня до сих пор удивляет, что таких вещей нет в базовой поставке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 16:52 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Vizit0rP.S. Меня до сих пор удивляет, что таких вещей нет в базовой поставке. Какие преимущества оно даёт по сравнению с TFileStream? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:07 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Угу. Я тоже не понимаю зачем в реальной жизни нужны "маппированные" файлы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:12 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
DmSerКакие преимущества оно даёт по сравнению с TFileStream? Никаких. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:13 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Мне надо, чтобы файлик записался, даже несмотря на то, что процесс умер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:17 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Нашел компонент с Торри по ссылке выше, допилил под использование с файлами, созданными через CreateFile, а не просто область в памяти, все заработало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:18 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
rgreat Угу. Я тоже не понимаю зачем в реальной жизни нужны "маппированные" файлы. На самом деле, именно в реализации TStream - пользы никакой, а вообще если работать через API, то доступ будет быстрее т.к., как я понимаю, MapViewOfFile() тупо возвращает адрес данных в файловом кэше и исключается лишнее копирование памяти туда-сюда, особенно в случае последовательного доступа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:18 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Ежов Дмитрий Сергеевич Мне надо, чтобы файлик записался, даже несмотря на то, что процесс умер. Это можно решить через FlushFileBuffers после записи данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:19 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
alekcvp, Это может решить только венда. Никаких FlushBuffer нет, процесс умер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:20 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
На самом деле, маппированный файл глубоко используется в нашей 1С-очке. https://its.1c.ru/db/metod8dev/content/5860/hdoc Пользователи сидят клиентами на серверном процессе rphost, который хранит всю их актуальную инфу в сеансовых данных, по факту в памяти. Серверный процесс падает (либо его рубит админ), менеджер сервера обнаруживает это, создает новый серверный процесс, который подтягивает сеансовые, которые уже записала венда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:23 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
alekcvpкак я понимаю, MapViewOfFile() тупо возвращает адрес данных в файловом кэше Судя по "A mapped view of a file is not guaranteed to be coherent with a file that is being accessed by the ReadFile or WriteFile function." это не так. Ежов Дмитрий СергеевичМне надо, чтобы файлик записался, даже несмотря на то, что процесс умер. Тогда просто всегда пиши WriteLn в паре с Flush. Ну или почини процесс, чтобы не умирал. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:26 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
мммм, неумирающий серверный процесс в сложных системах, без утечек памяти и кривых сторонних компонентов и кривого легаси от девопса. Что может быть естественней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:29 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Ежов Дмитрий СергеевичЧто может быть естественней... Использование инструментов тестирования и культуры программирования. Кто из дельфинов нынче на это способен?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:32 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
DmSer Vizit0rP.S. Меня до сих пор удивляет, что таких вещей нет в базовой поставке. Какие преимущества оно даёт по сравнению с TFileStream? насколько я помню из результатов изначального сравнения - MMF дает большой прирост к скорости непоследовательного чтения (записи нет). Ну и плюс доступ по указателю упрощает код. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 17:58 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Судя по "A mapped view of a file is not guaranteed to be coherent with a file that is being accessed by the ReadFile or WriteFile function." это не так. Вообще не вижу взаимосвязи. ReadFile читает данные в буфер и после этого они там не меняются, при изменении файла. MMF, как я понимаю, отображает всё в живую. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 18:14 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
alekcvpВообще не вижу взаимосвязи. ReadFile читает данные в буфер и после этого они там не меняются, при изменении файла. WriteFile пишет данные с системный буфер. Если бы этот буфер отображался сразу на память - данные в нём должны всегда соответствовать тому, что записало WriteFile. И наоборот: что записано в MMF, всегда должно получиться из ReadFile. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 18:26 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Ежов Дмитрий Сергеевич мммм, неумирающий серверный процесс в сложных системах, без утечек памяти и кривых сторонних компонентов и кривого легаси от девопса. Что может быть естественней... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 18:30 |
|
||
|
Файлы, отображаемые в память.
|
|||
|---|---|---|---|
|
#18+
Ежов Дмитрий Сергеевич Мне надо, чтобы файлик записался, даже несмотря на то, что процесс умер. Ежов Дмитрий Сергеевич alekcvp, Это может решить только венда. Никаких FlushBuffer нет, процесс умер. например, классический подход - это "ведение журнала операций + периодическое сохранение всего состояния" в случае обвала 1. берётся последнее сохранённое состояние, 2. ищется запись в журнале, которая соответствует этому состоянию, и накатываются все операции, сохранённые в журнале после неё NTFS, кстати, практически по такому же принципу работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2020, 19:48 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=33&tid=2037859]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
29ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 292ms |

| 0 / 0 |
