Some checks failed
sm-rpc / build (Debug, arm-linux-gnueabihf) (push) Successful in 1m34s
sm-rpc / build (Debug, aarch64-linux-gnu) (push) Successful in 2m46s
sm-rpc / build (Debug, host.gcc) (push) Failing after 1m28s
sm-rpc / build (Release, aarch64-linux-gnu) (push) Successful in 2m14s
sm-rpc / build (Release, arm-linux-gnueabihf) (push) Successful in 2m8s
sm-rpc / build (Debug, mipsel-linux-gnu) (push) Successful in 5m35s
sm-rpc / build (Release, host.gcc) (push) Failing after 1m55s
sm-rpc / build (Release, mipsel-linux-gnu) (push) Successful in 7m21s
41 lines
750 B
C++
41 lines
750 B
C++
#ifndef __TRACYTASKDISPATCH_HPP__
|
|
#define __TRACYTASKDISPATCH_HPP__
|
|
|
|
#include <atomic>
|
|
#include <condition_variable>
|
|
#include <functional>
|
|
#include <mutex>
|
|
#include <thread>
|
|
#include <vector>
|
|
|
|
namespace tracy
|
|
{
|
|
|
|
class TaskDispatch
|
|
{
|
|
public:
|
|
TaskDispatch( size_t workers, const char* name );
|
|
~TaskDispatch();
|
|
|
|
void Queue( const std::function<void(void)>& f );
|
|
void Queue( std::function<void(void)>&& f );
|
|
|
|
void Sync();
|
|
|
|
private:
|
|
void Worker();
|
|
void SetName( const char* name, size_t num );
|
|
|
|
std::vector<std::function<void(void)>> m_queue;
|
|
std::mutex m_queueLock;
|
|
std::condition_variable m_cvWork, m_cvJobs;
|
|
std::atomic<bool> m_exit;
|
|
size_t m_jobs;
|
|
|
|
std::vector<std::thread> m_workers;
|
|
};
|
|
|
|
}
|
|
|
|
#endif
|