Adding ThreadPool (doesnt work)

This commit is contained in:
Dynamitos
2023-12-17 16:16:46 +01:00
parent c409a3acd0
commit 34e0d283e8
15 changed files with 82 additions and 661 deletions
+11 -7
View File
@@ -28,25 +28,29 @@ public:
{
return (deps | ...);
}
void setupView(Dependencies<>, dp::thread_pool<>&)
void setupView(Dependencies<>, ThreadPool& pool)
{
List<std::function<void()>> work;
registry.view<Components...>().each([&](Components&... comp){
//pool.enqueue_detach([&](){
work.add([&](){
update(comp...);
//});
});
});
pool.runAndWait(std::move(work));
}
template<typename... Deps>
void setupView(Dependencies<Deps...>, dp::thread_pool<>&)
void setupView(Dependencies<Deps...>, ThreadPool& pool)
{
List<std::function<void()>> work;
registry.view<Components..., Deps...>().each([&](Components&... comp, Deps&... deps){
//pool.enqueue_detach([&](){
work.add([&]() {
(accessComponent(deps) + ...);
update((comp,...));
//});
});
});
pool.runAndWait(std::move(work));
}
virtual void run(dp::thread_pool<>& pool, double delta) override
virtual void run(ThreadPool& pool, double delta) override
{
SystemBase::run(pool, delta);
setupView(mergeDependencies((getDependencies<Components>(),...)), pool);
+1 -2
View File
@@ -1,7 +1,6 @@
#pragma once
#include "MinimalEngine.h"
#include "SystemBase.h"
#include <thread_pool/thread_pool.h>
namespace Seele
{
@@ -13,7 +12,7 @@ public:
Executor();
~Executor();
private:
dp::thread_pool<> pool;
ThreadPool pool;
};
} // namespace System
} // namespace Seele
+2 -2
View File
@@ -1,6 +1,6 @@
#pragma once
#include <thread_pool/thread_pool.h>
#include <entt/entt.hpp>
#include "ThreadPool.h"
#include "Scene/Scene.h"
namespace Seele
@@ -12,7 +12,7 @@ class SystemBase
public:
SystemBase(PScene scene) : registry(scene->registry), scene(scene) {}
virtual ~SystemBase() {}
virtual void run(dp::thread_pool<>&, double delta)
virtual void run(ThreadPool& pool, double delta)
{
deltaTime = delta;
update();
+1 -1
View File
@@ -7,7 +7,7 @@ void SystemGraph::addSystem(System::OSystemBase system)
systems.add(std::move(system));
}
void SystemGraph::run(dp::thread_pool<>& threadPool, float deltaTime)
void SystemGraph::run(ThreadPool& threadPool, float deltaTime)
{
for(auto& system : systems) {
system->run(threadPool, deltaTime);
+2 -1
View File
@@ -1,4 +1,5 @@
#pragma once
#include "ThreadPool.h"
#include "Containers/Array.h"
#include "SystemBase.h"
@@ -8,7 +9,7 @@ class SystemGraph
{
public:
void addSystem(System::OSystemBase system);
void run(dp::thread_pool<>& threadPool, float deltaTime);
void run(ThreadPool& threadPool, float deltaTime);
private:
Array<System::OSystemBase> systems;
};