diff options
Diffstat (limited to 'src/core.cpp')
-rw-r--r-- | src/core.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/core.cpp b/src/core.cpp index 1efaedc..3a78af2 100644 --- a/src/core.cpp +++ b/src/core.cpp @@ -69,6 +69,22 @@ vk_debug_callback( #endif void +load_threads(void *obj) +{ + auto num_threads{std::thread::hardware_concurrency() - 1}; + for(auto i{0}; i < num_threads; i++) + cg_core.threads.emplace_back( + cg_core.workers.emplace_back(&cg_core.job_queue)); +} + +void +unload_threads(void *obj) +{ + cg_core.job_queue.stop(); + for(auto &t: cg_core.threads) t.join(); +} + +void load_mruby_symbols(void *obj) { cg_core.sym_config = mrb_intern_cstr(cg_core.mrb, "config"); @@ -636,6 +652,7 @@ load_mruby_interface(void *obj) } const CommandChain cg_sCore::loader{ + {&load_threads, &unload_threads}, {&load_mruby_symbols, nullptr}, {&load_game, nullptr}, {&load_sdl, &unload_sdl}, |