JNetLibray
로딩중...
검색중...
일치하는것 없음
JobHandler 클래스 참조

#include <JobHandler.h>

JobHandler에 대한 상속 다이어그램 :

Public 멤버 함수

void HandleJob_Async (CallbackType &&callback)
 
template<typename T , typename Ret , typename... Args>
void HandleJob_Async (Ret(T::*method)(Args...), Args... args)
 

Private 타입

using JobRef = Job*
 

Private 멤버 함수

void executablePush (JobRef job)
 

Private 속성

uint32 m_AtomicJobCnt
 
LockFreeQueue< JobRefm_AllocatedJobs
 

멤버 타입정의 문서화

◆ JobRef

using JobHandler::JobRef = Job*
private

멤버 함수 문서화

◆ HandleJob_Async() [1/2]

void JobHandler::HandleJob_Async ( CallbackType && callback)
inline
11 {
12 auto job = new Job(std::move(callback));
13 executablePush(job);
14 }
void executablePush(JobRef job)
Definition JobHandler.cpp:3
Definition Job.h:11

◆ HandleJob_Async() [2/2]

template<typename T , typename Ret , typename... Args>
void JobHandler::HandleJob_Async ( Ret(T::* method )(Args...),
Args... args )
inline
18 {
19 std::shared_ptr<T> owner = std::static_pointer_cast<T>(shared_from_this());
20 auto job = new Job(owner, method, std::forward<Args>(args)...);
21 executablePush(job);
22 }

◆ executablePush()

void JobHandler::executablePush ( JobRef job)
private
4{
5 // Push
6 //const auto ret = InterlockedIncrement(&m_AtomicJobCnt);
7 //m_AllocatedJobs.Enqueue(job);
8 //if (ret > 1) return;
9 // => JobCnt를 증가하지만 Job Enqueue 전 다른 스레드가 Dequeue를 시도하면,
10 // Dequeue에 실패하여 어떠한 스레드도 Job을 수행하지 못하는 현상 발생 가능
11
12 // Push
13 m_AllocatedJobs.Enqueue(job);
14 if (InterlockedIncrement(&m_AtomicJobCnt) > 1) return;
15
16 // Execute
17 while (true) {
18 JobRef job;
19 if (!m_AllocatedJobs.Dequeue(job)) {
20 DebugBreak();
21 }
22
23 job->Execute();
24 if (InterlockedDecrement(&m_AtomicJobCnt) == 0) {
25 return;
26 }
27 }
28}
LockFreeQueue< JobRef > m_AllocatedJobs
Definition JobHandler.h:30
Job * JobRef
Definition JobHandler.h:8
uint32 m_AtomicJobCnt
Definition JobHandler.h:29
void Execute()
Definition Job.h:33

멤버 데이터 문서화

◆ m_AtomicJobCnt

uint32 JobHandler::m_AtomicJobCnt
private

◆ m_AllocatedJobs

LockFreeQueue<JobRef> JobHandler::m_AllocatedJobs
private

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: