summaryrefslogtreecommitdiff
path: root/src/core.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core.cpp')
-rw-r--r--src/core.cpp17
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},