summaryrefslogtreecommitdiff
path: root/src/core.cpp
diff options
context:
space:
mode:
authorFrederico Linhares <fred@linhares.blue>2022-10-19 11:36:27 -0300
committerFrederico Linhares <fred@linhares.blue>2022-10-19 11:36:49 -0300
commit0a905a0c33a1ae93174212b94dfdec946ebfaceb (patch)
tree6bda2df0c4f01be3f6f48290a45e5fef80b254fb /src/core.cpp
parent5f001f665d23da72a410995718b87079a87450fb (diff)
feat Create workers
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},