+ /** @return True if this thread is finished executing */
+ bool is_complete() { return state == THREAD_COMPLETED; }
+
+ /** @return True if this thread is blocked */
+ bool is_blocked() { return state == THREAD_BLOCKED; }
+
+ /** @return True if no threads are waiting on this Thread */
+ bool wait_list_empty() { return wait_list.empty(); }
+
+ /**
+ * Add a ModelAction to the waiting list for this thread.
+ * @param t The ModelAction to add. Must be a JOIN.
+ */
+ void push_wait_list(ModelAction *act) { wait_list.push_back(act); }
+
+ ModelAction * get_pending() { return pending; }
+ void set_pending(ModelAction *act) { pending = act; }
+ /**
+ * Remove one ModelAction from the waiting list
+ * @return The ModelAction that was removed from the waiting list
+ */
+ ModelAction * pop_wait_list() {
+ ModelAction *ret = wait_list.front();
+ wait_list.pop_back();
+ return ret;
+ }
+