I'm a bit confused why we have to be so concerned about the attributes of instructor_task changing out from under one thread of the code (to the extent that you have to order code to group the reads from instructor_task).  If this is concurrent code, then its correctness just seems brittle to me.  Can you provide a bit more background on what calls this?