- Removes GetState / SetState
- Adds a method IsJoinable()
There is no need for a distinction between IsHandleValid and IsThreadRunning, because even if a thread has run to completion, you are still required to Join on it. So a better function simply checks whether a thread is joinable. This is equivalent to checking if the handle is valid, because the Join() operation can reset the handle to an invalid handle after it has been performed.