Сообщение Re[5]: Правильная остановка долгозавершающейся службы от 31.03.2021 7:25
Изменено 31.03.2021 7:26 Carc
Re[5]: Правильная остановка долгозавершающейся службы
Здравствуйте, nekoriu, Вы писали:
C>>А если не секрет, в чем причина такой могучей задержки? Что она — служба — делает-то в это время да так долго?
N>Служба моя в том смысле, что у меня есть ее код. Писал ее не я. Мне нужно подправить ее завершение. Служба работает с несколькими БД, имеет несколько плагинов, прослушивает сокет и выполняет команды. Завершение 40 секунд у Debug конфигурации. Надо будет попробовать с конфигурацией Release.
По моему тут ошибка в архитектуре, в общей схеме организации работы службы, а не техническая проблема…
А работать с БД, и слушать сокет нельзя что ли в соседнем потоке? Когда основной поток службы получит сигнал о завершении, то пусть взведет какой-нить примитив синхронизации (mutex, event и.т.п). Ну, а соответственно фоновые потоки (работа с БД, сокет) пусть периодически проверяют этот примитив синхронизации. И коль примитив взведен, то сразу на выход…
Не? Так подойдет разве?
C>>А если не секрет, в чем причина такой могучей задержки? Что она — служба — делает-то в это время да так долго?
N>Служба моя в том смысле, что у меня есть ее код. Писал ее не я. Мне нужно подправить ее завершение. Служба работает с несколькими БД, имеет несколько плагинов, прослушивает сокет и выполняет команды. Завершение 40 секунд у Debug конфигурации. Надо будет попробовать с конфигурацией Release.
По моему тут ошибка в архитектуре, в общей схеме организации работы службы, а не техническая проблема…
А работать с БД, и слушать сокет нельзя что ли в соседнем потоке? Когда основной поток службы получит сигнал о завершении, то пусть взведет какой-нить примитив синхронизации (mutex, event и.т.п). Ну, а соответственно фоновые потоки (работа с БД, сокет) пусть периодически проверяют этот примитив синхронизации. И коль примитив взведен, то сразу на выход…
Не? Так подойдет разве?
Re[5]: Правильная остановка долгозавершающейся службы
Здравствуйте, nekoriu, Вы писали:
C>>А если не секрет, в чем причина такой могучей задержки? Что она — служба — делает-то в это время да так долго?
N>Служба моя в том смысле, что у меня есть ее код. Писал ее не я. Мне нужно подправить ее завершение. Служба работает с несколькими БД, имеет несколько плагинов, прослушивает сокет и выполняет команды. Завершение 40 секунд у Debug конфигурации. Надо будет попробовать с конфигурацией Release.
По моему тут ошибка в архитектуре, в общей схеме организации работы службы, а не техническая проблема…
А работать с БД, и слушать сокет нельзя что ли в соседнем потоке? Когда основной поток службы получит сигнал о завершении, то пусть взведет какой-нить примитив синхронизации (mutex, event и.т.п). Ну, а соответственно фоновые потоки (работа с БД, сокет) пусть периодически проверяют этот примитив синхронизации. И коль примитив взведен, то сразу на выход…
Не? Так не подойдет разве?
C>>А если не секрет, в чем причина такой могучей задержки? Что она — служба — делает-то в это время да так долго?
N>Служба моя в том смысле, что у меня есть ее код. Писал ее не я. Мне нужно подправить ее завершение. Служба работает с несколькими БД, имеет несколько плагинов, прослушивает сокет и выполняет команды. Завершение 40 секунд у Debug конфигурации. Надо будет попробовать с конфигурацией Release.
По моему тут ошибка в архитектуре, в общей схеме организации работы службы, а не техническая проблема…
А работать с БД, и слушать сокет нельзя что ли в соседнем потоке? Когда основной поток службы получит сигнал о завершении, то пусть взведет какой-нить примитив синхронизации (mutex, event и.т.п). Ну, а соответственно фоновые потоки (работа с БД, сокет) пусть периодически проверяют этот примитив синхронизации. И коль примитив взведен, то сразу на выход…
Не? Так не подойдет разве?