Skip to content

Commit

Permalink
Merge branch 'feature/Multithreaded-Asset-Loading'
Browse files Browse the repository at this point in the history
  • Loading branch information
tomheeleynz committed Nov 11, 2022
2 parents 2a9c369 + 3389e79 commit c728864
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
29 changes: 29 additions & 0 deletions Arcane/src/Arcane/Assets/AssetQueue.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
#include "AssetQueue.h"

namespace Arcane
{
AssetQueue* AssetQueue::s_Instance = nullptr;

AssetQueue::AssetQueue()
{

}

AssetQueue* AssetQueue::GetInstance()
{
if (!s_Instance)
s_Instance = new AssetQueue();

return s_Instance;
}

void AssetQueue::RunJob()
{
while (true) {
std::function<void()> job;
job = m_Jobs.front();
m_Jobs.pop();
job();
}
}
}
24 changes: 24 additions & 0 deletions Arcane/src/Arcane/Assets/AssetQueue.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
#pragma once

#include <thread>
#include <queue>
#include <functional>

namespace Arcane
{
class AssetQueue
{
public:


static AssetQueue* GetInstance();
private:
AssetQueue();
static AssetQueue* s_Instance;

void RunJob();
private:
std::thread m_AssetThread;
std::queue<std::function<void()>> m_Jobs;
};
}

0 comments on commit c728864

Please sign in to comment.