sf::Lock Class Reference

Automatic wrapper for locking and unlocking mutexes. More...

#include <Lock.hpp>

Inheritance diagram for sf::Lock:
sf::NonCopyable

List of all members.

Public Member Functions

 Lock (Mutex &mutex)
 Construct the lock with a target mutex.
 ~Lock ()
 Destructor.

Detailed Description

Automatic wrapper for locking and unlocking mutexes.

sf::Lock is a RAII wrapper for sf::Mutex.

By unlocking it in its destructor, it ensures that the mutex will always be released when the current scope (most likely a function) ends. This is even more important when an exception or an early return statement can interrupt the excution flow of the function.

For maximum robustness, sf::Lock should always be used to lock/unlock a mutex.

Usage example:

 sf::Mutex mutex;
 
 void function()
 {
     sf::Lock lock(mutex); // mutex is now locked
 
     functionThatMayThrowAnException(); // mutex is unlocked if this function throws
 
     if (someCondition)
         return; // mutex is unlocked
 
 } // mutex is unlocked

Because the mutex is not explicitely unlocked in the code, it may remain locked longer than needed. If the region of the code that needs to be protected by the mutex is not the entire function, a good practice is to create a smaller, inner scope so that the lock is limited to this part of the code.

 sf::Mutex mutex;
 
 void function()
 {
     {
       sf::Lock lock(mutex);
       codeThatRequiresProtection();
 
     } // mutex is unlocked here
 
     codeThatDoesntCareAboutTheMutex();
 }

Having a mutex locked longer than required is a bad practice which can lead to bad performances. Don't forget that when a mutex is locked, other threads may be waiting doing nothing until it ls released.

See also:
sf::Mutex

Definition at line 42 of file Lock.hpp.


Constructor & Destructor Documentation

sf::Lock::Lock ( Mutex mutex  ) 

Construct the lock with a target mutex.

The mutex passed to sf::Lock is automatically locked.

Parameters:
mutex Mutex to lock

Definition at line 35 of file Lock.cpp.

sf::Lock::~Lock (  ) 

Destructor.

The destructor of sf::Lock automatically unlocks its mutex.

Definition at line 43 of file Lock.cpp.


The documentation for this class was generated from the following files: