История изменений
Исправление alysnix, (текущая версия) :
у сервера в общем случае должен быть асинхронный способ терминирования, и некоторый признак или событие, что сервер успешно затерминировался, поскольку все асинхронно.
тогда хандлер сигнала вызывает этот метод, а мейн ждет на событии, что сервер завершил работу. затем, ну например, пишем - «server terminated» и выходим из мейна.
остановить сервер(я говорю о «сервере» в общем смысле), и как и любой многотред, это в общем случае, сложная операция, когда треды останавливают в определенном порядке… ну например выполняющие логгирование или сборку мусора, ну типа того, должны остановиться позже всех.
если не нравится глобальный флаг, то глобальной можно сделать только функцию его чтения, а сам флаг запрятать в модуле, где реализуется его установка.
Исходная версия alysnix, :
у сервера в общем случае должен быть асинхронный способ терминирования, и некоторый признак или событие, что сервер успешно затерминировался, поскольку все асинхронно.
тогда хандлер сигнала вызывает этот метод, а мейн ждет на событии, что сервер завершил работу. затем, ну например, пишем - «server terminated» и выходим из мейна.
остановить сервер, и как и любой многотред, это в общем случае, сложная операция, когда треды останавливают в определенном порядке… ну например выполняющие логгирование или сборку мусора, ну типа того, должны остановиться позже всех.
если не нравится глобальный флаг, то глобальной можно сделать только функцию его чтения, а сам флаг запрятать в модуле, где реализуется его установка.