How about using a counter instead of a flag?
Code:
* start thread *
push_flags();
disable_interrupts();
threadID++;
pop_flags();
* put thread code here *
* end thread *
Monitoring thread reads and resets (zeros) counters. Keeps track of when each counter was last reset. Uses counter value and elapsed time (since last reset) to monitor thread health.