From: "s.ross" Date: 2008-02-16T05:08:31+09:00 Subject: Re: Thread safety On Feb 15, 2008, at 10:54 AM, Jeff Turc wrote: > With the discussion surrounding merb/rails and thread safety, I've > been > somewhat concerned with making my own tiny home-rolled web apps that I > write thread safe, if only to become more knowledgeable on the > subject. > > I know it's probably hard to generalize, but does anybody have any > simple rules to follow (or resources to share) for writing thread safe > code? > > Thanks! Anyone else jump right in here. These are mine: Rule #1: Don't use global variables. Rule #2: If you do, when you change them, wrap them in a blocking mechanism such as a mutex or critical section so two threads can't try at once. Rule #3: If you are changing the state of an object that is not thread- local, wrap the change in a mutex (etc.) So, for example: require 'thread' my_object_sync = Mutex.new Thread.new do # just lock on this object my_object_sync.synchronize do # Update that is not atomic end end Rule #4: Don't be too sure that any operation in Ruby is atomic.