diff --git a/tile/init.cc b/tile/init.cc index 2cc3248..634f6ec 100644 --- a/tile/init.cc +++ b/tile/init.cc @@ -32,6 +32,7 @@ namespace tile { namespace { std::atomic g_quit_siganl{false}; +std::atomic g_tile_running{false}; void QuitSignalHandler(int sig) @@ -58,6 +59,11 @@ InstallQuitSignalHandler() int Start(int argc, char **argv, std::function cb, bool single_thread, bool enable_crash_catch) { + { + bool expected = false; + TILE_CHECK(g_tile_running.compare_exchange_strong(expected, true), "tile already running."); + } + if (enable_crash_catch) { // TODO: Add InstallFailureSignalHandler // google::InstallFailureSignalHandler(); @@ -139,6 +145,7 @@ void Init(int argc, char **argv, std::function cb) { std::unique_lock _(init_lock); + TILE_CHECK(g_tile_running.load() == false, "tile already running."); assert(lib_thread && "ReInitialize!!!"); const char *my_argv[1] = {"unknown"};