void CSpaceMultiThreadBalanceLength::DispatchThread(UInt32 un_id) { while(1) { THREAD_WAIT_FOR_START_OF(SenseControl); THREAD_DISPATCH_TASK(m_vecControllableEntities); THREAD_WAIT_FOR_START_OF(Act); THREAD_DISPATCH_TASK(m_vecControllableEntities); THREAD_WAIT_FOR_START_OF(Physics); THREAD_DISPATCH_TASK(*m_ptPhysicsEngines); } }
void CSpaceMultiThreadBalanceLength::SlaveThread(UInt32 un_id) { /* Task index */ size_t unTaskIndex; while(1) { THREAD_WAIT_FOR_START_OF(SenseControl); THREAD_PERFORM_TASK( SenseControl, m_vecControllableEntities[unTaskIndex]->Sense(); m_vecControllableEntities[unTaskIndex]->ControlStep(); ); THREAD_WAIT_FOR_START_OF(Act); THREAD_PERFORM_TASK( Act, m_vecControllableEntities[unTaskIndex]->Act(); );
void CSpaceMultiThreadBalanceLength::SlaveThread() { /* Task index */ size_t unTaskIndex; while(1) { THREAD_WAIT_FOR_START_OF(Act); THREAD_PERFORM_TASK( Act, m_vecControllableEntities, if(m_vecControllableEntities[unTaskIndex]->IsEnabled()) m_vecControllableEntities[unTaskIndex]->Act(); ); THREAD_WAIT_FOR_START_OF(Physics); THREAD_PERFORM_TASK( Physics, *m_ptPhysicsEngines, (*m_ptPhysicsEngines)[unTaskIndex]->Update(); );