EHS/include/ehs/Task.h
Karutoh bcd71cf2b5
All checks were successful
Build & Release / Windows-AMD64-Build (push) Successful in 1m8s
Build & Release / Linux-AMD64-Build (push) Successful in 1m30s
Build & Release / Linux-AARCH64-Build (push) Successful in 3m21s
Adjusted workflow.
2024-02-05 22:25:30 -08:00

51 lines
747 B
C++

#pragma once
#include "EHS.h"
#include "BaseObj.h"
#include "ehs/system/Thread.h"
#include "ehs/system/Semaphore.h"
namespace ehs
{
typedef void (*TaskCb)(Serializer<UInt_64>*);
class Task
{
private:
bool working;
Semaphore* available;
Semaphore* done;
Serializer<UInt_64>** cbArgs;
TaskCb* callback;
Serializer<UInt_64>* threadArgs;
Thread thread;
public:
~Task();
Task();
Task(Task&& task) noexcept;
Task(const Task& task);
Task& operator=(Task&& task) noexcept;
Task& operator=(const Task& task);
void Revalidate();
void Initialize();
void Release();
bool IsWorking() const;
void GiveWork(Serializer<UInt_64> args, TaskCb cb);
void WaitUntilDone();
bool IsValid() const;
};
}