Spinlocks should in used in code that is highly organized into clear cut separate regions that modify shared data, which are all independent of each other. For example, device driver routines. Moreover, using multiple locks for same type of object is also not advisable as it would lead to a deadlock resulting in loss of efficiency. Further acquiring locks within a region guarded by an already acquired lock, is dangerous and it would surely lead to a deadlock situation.