Base class for object that require syncronized access
( Mutial exclusive access )
every object of this type supports 2 synchronization methods :
RequestObj() - Wait until the object is free ( no timeout )
ReleaseObj() - Free the object for other users.