I'm only recounting Richter and Nasarre in their book 'Windows via c/c++'. Incidently, they also give statistics that indicate that SRWLocks are even faster (approx 2x) than critical sections.
@Disch
I don't think it's a problem: SingletonAccess(const SingletonAccess& sa) : t(sa.t), lock(mutex) {}
You get a new lock on the same mutex. Locks are not copyable, but nowhere is one copied. And as I said, sf::Mutex should allow the nested locking on Windows at least - I read that critical sections do and the sf::Mutex is a critical section on windows. I'm guessing it will on other platforms too, since a cross platform library with different behaviour on different platforms isn't so cross platform.
Given the lock is RAII, I'm not sure it's easily possible to have mismatched locks.
@exiledAussie
Coincidentally, the mutex I am talking about is a critical section anyway on windows. The SFML developer just called it a mutex. I don't know how it's implemented on other platforms.