adding async chunk generation

This commit is contained in:
Kbz-8
2025-05-17 23:10:31 +02:00
parent de4d826d57
commit 904f079cd1
19 changed files with 167 additions and 75 deletions

View File

@@ -1,8 +1,11 @@
#ifndef UTILS_H
#define UTILS_H
#include <mutex>
#include <queue>
#include <unistd.h>
#include <filesystem>
#include <condition_variable>
#include <ScopMaths.h>
@@ -42,4 +45,36 @@ namespace std
};
}
template <typename T>
class ThreadSafeQueue
{
public:
inline void Push(T item)
{
const std::unique_lock<std::mutex> lock(m_mutex);
m_queue.push(item);
m_cond.notify_one();
}
inline T Pop()
{
std::unique_lock<std::mutex> lock(m_mutex);
m_cond.wait(lock, [this]() { return !m_queue.empty(); });
T item = m_queue.front();
m_queue.pop();
return item;
}
bool IsEmpty() const
{
const std::unique_lock<std::mutex> lock(m_mutex);
return m_queue.empty();
}
private:
std::queue<T> m_queue;
mutable std::mutex m_mutex;
std::condition_variable m_cond;
};
#endif