Not exactly thread safety, but rather a thread deadlock. In order to obtain a cPlayer object, one thread needs to lock certain locks. Then, to send the XP, another set of locks needs to be obtained. If another thread holds the second set of locks and requests the first set of locks at that time, they become deadlocked.