Files
2026-04-05 21:37:35 +04:00

35 lines
805 B
C++

#include <condition_variable>
#include <cstdint>
#include "internal/lambds_traits.hpp"
#include <type_traits>
#include <vector>
#include <thread>
#include <mutex>
#include <condition_variable>>
namespace hqueue {
template<typename T>
concept executor_t = requires(T a) {
std::is_invocable_v<T>;
};
template<executor_t executor, typename cache_entry_t>
class queue {
public:
using return_type = typename function_traits<executor_t>::return_type;
using arguments = typename function_traits<executor_t>::argument_types;
template<typename R, typename Args>
struct Task {
Args args;
//use std expected
};
queue(executor exec) : m_executor(exec) { }
private:
std::mutex m_mtx;
std::condition_variable m_cv;
executor m_executor;
};
}