Last month I took the Operating Systems course at Full Sail.  The lectures were focused on how operating systems worked.  I learned a lot about processes and the way an operating system functions through the lectures.  There were multiple choice tests that went along with the lecture material as well as material from the book.  The labs were probably the most interesting part of the course for me.  We touched slightly on multithreading in my Windows Programming 1 course, but we really got a better look at the issues with multithreading.  Our labs focused on solving issues like race conditions and deadlock.

The most difficult part of the class for me by far was understanding what was happening and when in order to get proper synchronization.  I found that the best way to solve this was to thoroughly comment the code for myself before I had written it with a series of explanations of what was happening and when.  It made the synchronization much easier to understand when I was writing it and easier to debug when it got deadlocked later.

We used a wrapper written by our course director to interact with threads, but through this API we learned several major new skills:

  • Start threads with the appropriate thread attributes
  • Create and use lock and change objects
  • Get complete synchronization so the program runs in exactly the order specified and avoid deadlock
  • Debug threads to understand what they’re doing and solve race conditions, “thrashing”, and deadlock

I completed the OPS Course at the end of July with a 100% on the programming final and a 92% (A) in the class.  I’ve found myself considering threading as a solution for my current game and look forward to implementing threading into future projects.