Can I do Array#push from multiple threads at the same time, and know that all the objs pushed from the threads are on the Array, in some indeterminate order? What about Array#delete from multiple threads, and know it was deleted (though only by one of the threads)? Can I do Socket#recvfrom and Socket#sendto from multiple threads? I think the answers should be yes, because ruby threads aren't real threads, they are more mechanisms for dealing with blocking operations (like socket calls and explicit Mutex) than threads. I don't want to start peppering my code with unnecessary Mutex#synchronize calls! Cheers, Sam