trick/trick_source/sim_services/Executive/Executive_isThreadReadyToRun.cpp
Alex Lin c4b872c26e Don't start or wait for disabled threads in the executive
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 ;
}