Why repeat “should” over and over again in your specs? I prefer not to do this:
it "should throw an exception"
it "should not run if already running"
it "should prevent duplicate access"
But instead, this:
it "throws an exception"
it "doesn't run if already running"
it "prevents duplicate access"
More concise and more forceful - seems like a win all around. (Note that David Chelimsky disagrees.)