Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Delphi-приложение может быть запущенно в нескольких экземлярах. Например, запущено три. Хочу решить такую задачу - мне нужно отреагировать в момент, когда пользователь закрывает два экземляра, и остается только один (последний). Посоветуйте, в какую сторону копать? Хочется что-то вроде сабжа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 11:41 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
семафоры Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 11:56 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
КвейдПосоветуйте, в какую сторону копать? MMF из свапа. Это даст тебе общую память, где ты можешь держать атомарный счётчик или чёрта с рогами. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 12:34 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
семафоры, у них есть счетчик, глобальные на всю систему. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.05.2021, 23:54 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
makhaonсемафоры, у них есть счетчик, глобальные на всю систему У них совсем плохо с сигнализацией достижения единицы. Да и с нулём не очень. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 00:33 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Квейд, а у MMF плохо с завершением - выпала программа, а твой счётчик не обновился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 11:20 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Квейд, OpenThread и WaitForObject. В каждой копии программы открываешь главный поток и ждешь его завершения. Как главный поток завершился, уменьшаешь счетчик. Таким образом каждая копия программы мониторит друг друга. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 11:32 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Надо именно ловить момент, когда экземпляр остается в одиночестве? Чтобы из реплики стать мастером? Может, event поможет? В мастере создается, реплики мониторят. Как только мастер закрывается, реплика создает event и становится мастером ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 11:38 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)выпала программа, а твой счётчик не обновился. Поэтому нормальные программисты стараются писать программы, которые не выпадают. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 13:27 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Пользователь прибил приложение и все счетчик не обновился. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 14:47 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
При обычном прибитии приложению сначала посылается штатный WM_CLOSE. Чтобы счётчик не обновился приложение должно либо зависнуть, либо прибитие нужно жёсткое, с TerminateProcess, каковое для обычных пользователей слишком сложно, ибо делается с "нипанятной" страница таскменеджера. Ну и последующие глюки - тоже на его, пользователя, совести. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 14:53 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Ну и последующие глюки - тоже на его, пользователя, совести. Приложение которое не защищено от нештатного завершения - это кривые руки программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 16:31 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
А цель-то какая? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 16:42 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov kealon(Ruslan)выпала программа, а твой счётчик не обновился. Поэтому нормальные программисты стараются писать программы, которые не выпадают. стараться и написать - разные вещи, а вот спустить ответственность на пользователя - это непроффесионализм ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 19:01 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Электричество закончилось - тоже проблема пользователя? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 19:36 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
YuRock Электричество закончилось - тоже проблема пользователя? Тогда счетчик уже не важен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 19:40 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
У меня идея такая, как вариант. 1. Пытаемся создать серверный сокет на определенный порт. 2. Если получилось - ты единственная (главная) программа. 3. Если не получилось - пытаемся подключиться к такому серверу. Подключились, и начинаем вечно чего-то ждать от сервера. Как придет ошибка (сервер закрылся) - возвращаемся в п. 1. На локальных сокетах должно всё мгновенно отрабатывать по идее, даже если жОстко снять процесс сервера. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 19:42 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
X-Cite YuRock Электричество закончилось - тоже проблема пользователя? Тогда счетчик уже не важен :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 19:43 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
1. Первый запущенный экземпляр открывает MMF и становится "главным". 2. Все последующие - проверяют MMF и регистрируют в главном экземпляре себя (например, отправкой сообщений в окно, указанное в MMF). Хэндл на MMF не держат открытым. 3. Главный экземпляр ждёт завершения всех зарегистрированных вторичных процессов. 4. Если главный процесс закрывается пользователем раньше вторичных - нужно себя отфинализировать полностью, но MMF не закрывать, ждать завершения всех вторичных, а потом грохнуться. 5. Событие "остается только один (последний) экземпляр" наступает, когда главный процесс дожидается завершения всех зарегистрированных вторичных. В этом случае последний экземпляр - главный. Либо, если главный уже логически финализирован, то когда он дождётся завершения всех, кроме одного вторичного. В этом случае последний экземпляр - оставшийся вторичный. В качестве главного процесса можно использовать вспомогательный exe, чтобы не было необходимости закрывать его раньше вторичных. Если вторичный процесс терминируется - главный об этом узнает. Если терминируется главный - ой. Как вариант: вторичные процессы тоже могут ждать завершения главного, и если он закрылся раньше вторичного - переизбрать главного среди вторичных (например, кто первее переоткроет MMF - того и тапки). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 20:45 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
GunSmoker, А если тупо создать два глобальных Mutex'a причём один захватывает первый запущенный экземпляр приложения, а следующий - отпускает. После чего все экземпляры приложения в отдельном потоке ждут на этих Mutex'ах. И если у какого-то экземпляра они оказываются оба, то он проверяет наличие других экземпляров (неважно как) и если не находит - профит. Ну и снова отпускает один Mutex. Только при запуске нового экземпляра надо сообщить об этом всем остальным, чтобы они начали ждать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 21:07 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
GunSmoker В качестве главного процесса можно использовать вспомогательный exe, чтобы не было необходимости закрывать его раньше вторичных. там много что можно настроить ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2021, 22:12 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Уголок извращенца Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 02:17 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Каждый процесс создаёт в заведомо известном каталоге временный файл (флаг FILE_FLAG_DELETE_ON_CLOSE) и подписывается на изменения содержимого каталога. Всё. Телемаркет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 12:06 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Квейд Посоветуйте, в какую сторону копать? Хочется что-то вроде сабжа. Лично я, во-первых, посмотрел бы алгоритмы выбора мастера (ведущего из кучи равноправных нод итп), а во-вторых, намонстрячил бы небольшой протокол на RegisterWindowMessage/HWND_BROADCAST. Что-нибудь типа того: а) сдыхающий мастер делает рассылку о выборах б) каждый получивший отвечает рассылкой свежесгенерированного guid-а, выдавший наименьший считает себя мастером в) усомнившийся в существовании других опять же делает рассылку о выборах (на случай тихо сдохшего мастера) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 12:28 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
А вот если организовать что-то такое: 1) простенькой COM-объект 2) и пусть каждое приложение создаёт себе его экземпляр 3) у COM-объекта пусть будет событие (не знаю, возможно такое), связанное с изменением числа инстансов и обработчик этого события и есть искомая фишка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 13:12 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=40074917&tid=2037229]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 14ms |
| total: | 290ms |

| 0 / 0 |
