This package contains an implementation of a remote_mutex to be used by many different nodes. There are some rare cases when a common resource needs to be shared but used with mutual exclusion. Each mutex has a unique name through-out the system.

Mutex Guard

The mutex guard is a single node and guards a single mutex. To start a mutex guard run

rosrun remote_mutex mutex nameOfMutex

Use the mutex in your node

To use the mutex, you have to first add to manifest.xml a dependency to this package and to the CMakeLists.txt to link the executable with the RemoteMutex library.

In the code you should include

#include "remote_mutex/RemoteMutex.h"

and then create an RemoteMutex object

RemoteMutex mutex("nameOfMutex");

the new object can now be used to lock, unlock or get the status of the remote mutex using the object's methods.

For example by calling


The call blocks until it can locked. Note that you can set a maximum amount of time to wait. For example,

bool locked = mutex.lock(ros::Duration(2));

will try to lock for 2 minutes. If it fails, then it will return false.

For the full documentation see API.

Technical Information

The remote mutex implementation is based on a single service that the mutex guard serves. The mutex clients lock and unlock the mutex by calling a service (this is done by the RemoteMutex implementation).

Wiki: remote_mutex (last edited 2011-08-06 18:05:49 by MiltiadisAllamanis)