trick/trick_source/sim_services/Executive/Executive_isThreadReadyToRun.cpp
Alex Lin c4b872c26e Don't start or wait for disabled threads in the executive #549
Added check to see if thread is enabled when starting it and waiting
for it to finish.  If it is disabled, skip it.
2018-01-23 09:37:02 -06:00

39 lines
1.3 KiB
C++

#include "trick/Executive.hh"
/*
-# Switch on the type of thread
-# Scheduled threads are always ready to run
-# AMF thredas are ready to run if their previous frame just finished
-# ASYNC threads are ready to run if their complete flag is set and either they have
no cycle time or their previous frame just finished.
*/
bool Trick::Executive::isThreadReadyToRun( Trick::Threads * curr_thread , long long time_ticks) {
bool ret = false ;
if ( curr_thread->enabled ) {
switch ( curr_thread->process_type ) {
case Trick::PROCESS_TYPE_SCHEDULED:
ret = true ;
break ;
case Trick::PROCESS_TYPE_AMF_CHILD:
if ( curr_thread->amf_next_tics == time_ticks ) {
ret = true ;
}
break ;
case Trick::PROCESS_TYPE_ASYNC_CHILD:
if ( curr_thread->child_complete == true ) {
if (curr_thread->amf_cycle_tics == 0 ) {
ret = true ;
} else {
if ( curr_thread->amf_next_tics == time_ticks ) {
ret = true ;
}
}
}
break ;
}
}
return ret ;
}