Does the spec mandate thread safety? (I guess I should ask if there's a spec or is MRI the reference implementation)
Given that MRI ships with a GIL, the only core classes that are intentionally aware of multi-threading concerns are Mutex, ConditionVariable, and Queue.
What saves you most of the time is that it isn't worth switching threads too often so normally you get lucky.