blob: 72096ec9e23fa67e8ddd47ce61d8d13390a4758f (
plain) (
tree)
|
|
#pragma once
#include "defaults.h"
using TAtExitFunc = void (*)(void*);
using TTraditionalAtExitFunc = void (*)();
void AtExit(TAtExitFunc func, void* ctx);
void AtExit(TAtExitFunc func, void* ctx, size_t priority);
void AtExit(TTraditionalAtExitFunc func);
void AtExit(TTraditionalAtExitFunc func, size_t priority);
bool ExitStarted();
/**
* Generally it's a bad idea to call this method except for some rare cases,
* like graceful python DLL module unload.
* This function is not threadsafe.
* Calls in the moment when application is not terminating - bad idea.
*/
void ManualRunAtExitFinalizers();
/**
* You shouldn't ever need this, unless you are writing some DLL modules,
* which might get unloaded before application termination (nginx's modules, for example).
* If a DLL sets exit handlers which belong to the DLL itself, these handlers point to
* nowhere after the DLL has been unloaded, and an attempt to invoke any of those at the
* application termination leads to a crash.
*/
void DisableExitHandlers();
|