Этот баннер — требование Роскомнадзора для исполнения 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 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Кроик Семён А вот если организовать что-то такое: 1) простенькой COM-объект 2) и пусть каждое приложение создаёт себе его экземпляр 3) у COM-объекта пусть будет событие (не знаю, возможно такое), связанное с изменением числа инстансов и обработчик этого события и есть искомая фишка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 13:37 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
а где ТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 13:53 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Каждый процесс создаёт в заведомо известном каталоге временный файл (флаг FILE_FLAG_DELETE_ON_CLOSE) и подписывается на изменения содержимого каталога. Всё. Телемаркет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:09 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий семафоры +1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:16 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мне уже интересно: как это реализовать на семафорах? Раз плюсуют, значит знают способ... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:20 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Автор невовремя пропал, конечно. Квейд Хочу решить такую задачу - мне нужно отреагировать в момент, когда пользователь закрывает два экземляра, и остается только один (последний). Для этого reference counter не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:28 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а где ТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:33 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Не, это стародавний товарищ, а не тролль-новобранец. :) Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:36 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Barmaley57 Каждый процесс создаёт в заведомо известном каталоге временный файл (флаг FILE_FLAG_DELETE_ON_CLOSE) и подписывается на изменения содержимого каталога. Всё. Телемаркет. Если будут считать файлы перед созданием своего - будут считать себя главными оба. Если после - то оба будут считать себя НЕглавными (с большой вероятностью). Каша какая-то, по нотификации изменений следить... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:37 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а где ТС? Сделал всё на семафорах после первого коммента :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:37 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Да, вроде, ничего сложного. https://delphi.cjcsoft.net/viewthread.php?tid=47350 Семафор, он же именованный и уникальный для всей системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:37 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Хотя я бы еще проще поступил (для твоей задачи). Возможно, это тупо... Но просто писал бы реестр нужную циферку. А реестр, один фиг в памяти болтается. Так, что все весьма шустро. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:40 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Virtual StudentДа, вроде, ничего сложного. Только тамошний пример не имеет ничего общего с задачей топика... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:43 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
YuRock Ситуация. Папка пустая. Два процесса запускаются одновременно. Потом ТС ничего не говорил про главный/не главный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:45 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
А если сделать dll-библиотеку со счётчиком и делать InterlockedIncrement() при DLL_PROCESS_ATTACH и InterlockedDecrement() при DLL_PROCESS_DETACH. А когда он станет равен 1 взводить какой-нибудь Event?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:55 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
alekcvpА если сделать dll-библиотеку со счётчиком У библиотеки, загруженной в разные процессы, уже лет 25 как нет общего сегмента данных. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:56 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
alekcvp InterlockedIncrement() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 14:58 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov alekcvpА если сделать dll-библиотеку со счётчиком У библиотеки, загруженной в разные процессы, уже лет 25 как нет общего сегмента данных. Они то как раз общие, пока читаешь. А потом COPY_ON_WRITE и усё ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:00 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
YuRock У меня идея такая, как вариант. 1. Пытаемся создать серверный сокет на определенный порт. 2. Если получилось - ты единственная (главная) программа. 3. Если не получилось - пытаемся подключиться к такому серверу. Подключились, и начинаем вечно чего-то ждать от сервера. Как придет ошибка (сервер закрылся) - возвращаемся в п. 1. На локальных сокетах должно всё мгновенно отрабатывать по идее, даже если жОстко снять процесс сервера. Лучше заменить на именованный пайп. Плюс в том, что нет коллизии с другим софтом, который вдруг будет слушать именно этот порт. Либо можно бродкастить UDP сообщения по типу UPNP протокола. Или сообщения рассылать (периодически пингуя главного) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:01 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov Virtual StudentДа, вроде, ничего сложного. Только тамошний пример не имеет ничего общего с задачей топика... Там и с mutex'ом пример в конце... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:01 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Virtual StudentТам и с mutex'ом пример в конце... Да хоть с чёртом с рогами. Покажите на пальцах как на семафоре и/или мутексе сделать счётчик ссылок с сигнализацией достижения единицы или хотя бы нуля, устойчивый к TerminateProcess. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:03 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal YuRock У меня идея такая, как вариант. 1. Пытаемся создать серверный сокет на определенный порт. 2. Если получилось - ты единственная (главная) программа. 3. Если не получилось - пытаемся подключиться к такому серверу. Подключились, и начинаем вечно чего-то ждать от сервера. Как придет ошибка (сервер закрылся) - возвращаемся в п. 1. На локальных сокетах должно всё мгновенно отрабатывать по идее, даже если жОстко снять процесс сервера. Лучше заменить на именованный пайп. Плюс в том, что нет коллизии с другим софтом, который вдруг будет слушать именно этот порт. Либо можно бродкастить UDP сообщения по типу UPNP протокола. Мдя... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:03 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov, Создаем мьютекс: Код: pascal 1. Проверяем его владельца: Код: pascal 1. 2. 3. 4. 5. 6. Или тебе необходимо точное количество запущенных копий приложения? Вот еще ресурс по теме: https://streletzcoder.ru/rabota-s-myuteksami-v-stile-oop-delphi-tmutex/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:16 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Virtual Student, и как это поможет прореагировать в тот момент, когда горец отрубит предпоследнюю голову? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:19 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Virtual Student Код: pascal 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:21 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov У библиотеки, загруженной в разные процессы, уже лет 25 как нет общего сегмента данных. Уголок извращенца #2 Код: 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. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:38 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
alekcvp, MSDNIf you terminate a process by calling TerminateProcess or TerminateJobObject, the DLLs of that process do not receive DLL_PROCESS_DETACH notifications. If you terminate a thread by calling TerminateThread, the DLLs of that thread do not receive DLL_THREAD_DETACH notifications. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:43 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57, Мда, печалько. Тогда первый вариант остаётся в силе 😃 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:45 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
alekcvp Код: pascal 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:45 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
DS> счётчик ссылок с сигнализацией Для начала нужно уточнить, нужен ли этот счётчик. Ибо для обозначенной в первом посте задачи он нафиг не сдался. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:46 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
YuRock, Извиняйте господа, с форума другого стащил. P.S.: Пивной выходной у меня сегодня... :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:47 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам DS> счётчик ссылок с сигнализацией Для начала нужно уточнить, нужен ли этот счётчик. Ибо для обозначенной в первом посте задачи он нафиг не сдался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 15:50 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57> Расшифруй мысль. Что там расшифровывать? Для решения задачи "последнего выжившего оставшегося" счётчик не нужен, совсем. Если, конечно, не хочется где-нибудь в уголочке светить красненьким "запущено 7 экз-в" и чтобы эта 7 была "живой". Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 16:19 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Barmaley57> Расшифруй мысль. Что там расшифровывать? Для решения задачи "последнего выжившего оставшегося" счётчик не нужен, совсем. Если, конечно, не хочется где-нибудь в уголочке светить красненьким "запущено 7 экз-в" и чтобы эта 7 была "живой". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 16:23 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57> Процессу надо узнать, что он остался один. Каков твой вариант? Именно, что один, а не "сдох предпредпоследний". Например, захватываешь мьютекс и доволен, ты один. Остальные (в отдельном потоке) ждут этого мьютекса. Когда захватчик отпускает (или помирает) - просыпается один из спящих, захватывает. Требований к очередности захвата в стартовом посте не заявлено. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 16:44 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам,ТСНапример, запущено три. Хочу решить такую задачу - мне нужно отреагировать в момент, когда пользователь закрывает два экземляра, и остается только один (последний). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 16:49 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
alekcvpУголок извращенца #2 О, как внезапно "семафоры" превращаются в "shared memory + atomic counter"... А теперь возвращаемся на первую страницу и перечитываем первые три сообщения. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 16:52 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57> пользователь закрывает два экземляра, Barmaley57> и остается только один (последний). Это не проблема. Проблема, если закрывают два последних, а "главный" (держатель мьютекса) ещё работает. В общем, нужно уточнять, что и для чего ему нужно - наверняка, он хочет "прибрать" за собой ресурсы или что-то вроде того. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 17:23 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov О, как внезапно "семафоры" превращаются в "shared memory + atomic counter"... А теперь возвращаемся на первую страницу и перечитываем первые три сообщения. 1. Про семафоры я ничего не писал. 2. На первой странице я привёл работающее у меня решение на мьютексах. 3. Просто счётчик в Shared Memory не катит из-за аварийного завершения процессов. Я просто не знал, что для dll тоже не выхывается нотификация при убийстве процесса, так что это решение тоже не подходит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 17:49 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Barmaley57 Каждый процесс создаёт в заведомо известном каталоге временный файл (флаг FILE_FLAG_DELETE_ON_CLOSE) и подписывается на изменения содержимого каталога. Всё. Телемаркет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 19:31 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
А теперь давайте все тоже самое - но кроссплатформенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 22:06 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov А теперь давайте все тоже самое - но кроссплатформенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2021, 22:30 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Maxim Rusov А теперь давайте все тоже самое - но кроссплатформенно. В Лине как раз временный файл по типу PID больше распространен. Да и там намного легче создать и юзать именованный файловый сокет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2021, 10:19 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
я так подозреваю, граждане, что Квейд подался в партизаны... Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.06.2021, 11:31 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Fr0sT-Brutal Надо именно ловить момент, когда экземпляр остается в одиночестве? Чтобы из реплики стать мастером? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:23 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а где ТС? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:25 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
softwarer Мимопроходящий а где ТС? Сделал всё на семафорах после первого коммента :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:26 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам В общем, нужно уточнять, что и для чего ему нужно - наверняка, он хочет "прибрать" за собой ресурсы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:29 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
07.06.2021 13:29, Квейд пишет: > Верно, именно так ты задачу-то опиши. а то народ и дальше будет городить огороды. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:35 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Гаджимурадов Рустам Автор невовремя пропал, конечно. Квейд Хочу решить такую задачу - мне нужно отреагировать в момент, когда пользователь закрывает два экземляра, и остается только один (последний). Для этого reference counter не нужен. А если остается "последний", после чего пользователь опять запускает второй экземпляр, а первый - закрывает? Не могу уложить в голове, как тогда обойтись без счетчика ссылок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:36 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 07.06.2021 13:29, Квейд пишет: > Верно, именно так ты задачу-то опиши. а то народ и дальше будет городить огороды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:39 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
КвейдНе могу уложить в голове, как тогда обойтись без счетчика ссылок. Проблема в том, что и счётчик ссылок тебе в этом случае не поможет. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:41 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Dimitry Sibiryakov КвейдНе могу уложить в голове, как тогда обойтись без счетчика ссылок. Проблема в том, что и счётчик ссылок тебе в этом случае не поможет. Почему? Если счетчик равен единице, значит "мы последние". На первый взляд все просто. Что я мог пропустить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 13:54 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
КвейдЧто я мог пропустить? Гонки потоков. В твоём случае я бы вынес работу с "хитрым внешним ресурсом" в сервис, который всегда один, а из приложений уже взаимодействовал с ним. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 14:06 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Квейд, А если по таймеру из каждого инстанса мониторить список процессов, можно было бы поймать тот момент, когда определённый EXEшник остался один. Если же не хочется привязываться к имени EXE файла, то можно было бы в каждом создать через AllocateHWnd невидимое окно со специфическими свойствами и периодически мониторить окна верхнего уровня. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 17:41 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
Кроик Семён можно было бы поймать тот момент, когда определённый EXEшник остался один. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2021, 18:48 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_ Кроик Семён можно было бы поймать тот момент, когда определённый EXEшник остался один. От этого ты никак не застрахуешься в обычной операционной системе. Разве что перед проверкой устанавливать какой-нибудь эвент, который запрещает запуск новых экземпляров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2021, 13:48 |
|
||
|
Глобальный reference counter для нескольких процессов?
|
|||
|---|---|---|---|
|
#18+
08.06.2021 13:48, alekcvp пишет: > От этого ты никак не застрахуешься в обычной операционной системе. в обычной операционной системе есть стандартные функции, дабы не заниматься велосипедированием. но почему-то большинство участников дискуссии их предпочитают игнорировать. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.06.2021, 13:53 |
|
||
|
|

start [/forum/topic.php?all=1&fid=58&tid=2037229]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
92ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 303ms |

| 0 / 0 |
