LINUX.ORG.RU

История изменений

Исправление alysnix, (текущая версия) :

у сервера в общем случае должен быть асинхронный способ терминирования, и некоторый признак или событие, что сервер успешно затерминировался, поскольку все асинхронно.

тогда хандлер сигнала вызывает этот метод, а мейн ждет на событии, что сервер завершил работу. затем, ну например, пишем - «server terminated» и выходим из мейна.

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

если не нравится глобальный флаг, то глобальной можно сделать только функцию его чтения, а сам флаг запрятать в модуле, где реализуется его установка.

Исходная версия alysnix, :

у сервера в общем случае должен быть асинхронный способ терминирования, и некоторый признак или событие, что сервер успешно затерминировался, поскольку все асинхронно.

тогда хандлер сигнала вызывает этот метод, а мейн ждет на событии, что сервер завершил работу. затем, ну например, пишем - «server terminated» и выходим из мейна.

остановить сервер, и как и любой многотред, это в общем случае, сложная операция, когда треды останавливают в определенном порядке… ну например выполняющие логгирование или сборку мусора, ну типа того, должны остановиться позже всех.

если не нравится глобальный флаг, то глобальной можно сделать только функцию его чтения, а сам флаг запрятать в модуле, где реализуется его установка.