mirror of
https://github.com/nasa/trick.git
synced 2024-12-21 06:03:10 +00:00
c4b872c26e
Added check to see if thread is enabled when starting it and waiting for it to finish. If it is disabled, skip it.
39 lines
1.3 KiB
C++
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 ;
|
|
}
|
|
|