mirror of
https://github.com/MihailRis/voxelcore.git
synced 2026-10-06 19:41:51 +00:00
rename engine.hpp/cpp to Engine.hpp/cpp & move Engine, Time and mainloop classes to 'engine' folder
This commit is contained in:
parent
357e4f8607
commit
5e76cdfadc
41 changed files with 38 additions and 43 deletions
29
src/engine/PostRunnables.hpp
Normal file
29
src/engine/PostRunnables.hpp
Normal file
|
|
@ -0,0 +1,29 @@
|
|||
#pragma once
|
||||
|
||||
#include <queue>
|
||||
#include <mutex>
|
||||
#include "delegates.hpp"
|
||||
|
||||
class PostRunnables {
|
||||
std::queue<runnable> runnables;
|
||||
std::recursive_mutex mutex;
|
||||
public:
|
||||
void postRunnable(runnable task) {
|
||||
std::lock_guard<std::recursive_mutex> lock(mutex);
|
||||
runnables.push(std::move(task));
|
||||
}
|
||||
|
||||
void run() {
|
||||
std::queue<runnable> tasksToRun;
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> lock(mutex);
|
||||
std::swap(tasksToRun, runnables);
|
||||
}
|
||||
|
||||
while (!tasksToRun.empty()) {
|
||||
auto& task = tasksToRun.front();
|
||||
task();
|
||||
tasksToRun.pop();
|
||||
}
|
||||
}
|
||||
};
|
||||
Loading…
Add table
Add a link
Reference in a new issue