engine/include/Utils/ThreadUtils.h

48 lines
823 B
C++

#ifndef THREAD_UTILS_H_INCLUDED
#define THREAD_UTILS_H_INCLUDED
#include "boost/asio.hpp"
#include "boost/signal.hpp"
#include "boost/thread.hpp"
namespace SE
{
namespace ST
{
extern boost::asio::io_service MainThreadIoService;
extern boost::thread::id MainThreadId;
}
#ifndef UTILS_ENGINE
struct TFuncToPerform
{
private:
public:
TFuncToPerform()
: LockerPtr(new boost::mutex)
{
}
std::shared_ptr<boost::mutex> LockerPtr;
boost::function<void()> Func;
};
void AssertIfInMainThread();
void TryUpdateMainThreadId();
void PerformInMainThreadAsync(boost::function<void()> f);
template<typename RETURNTYPE>
RETURNTYPE PerformInMainThread(boost::function<RETURNTYPE()> f);
#endif
} //namespace SE
#endif