is there a simple timed lock algorithm avoiding deadlock on multiple mutexes?

Posted by Vicente Botet Escriba on Stack Overflow See other posts from Stack Overflow or by Vicente Botet Escriba
Published on 2010-05-02T15:04:34Z Indexed on 2010/05/02 15:07 UTC
Read the original article Hit count: 143

Filed under:
|
|
|
|

C++0x thread library or Boost.thread define a non-member variadic template function that locks all mutex at once that helps to avoid deadlock.

template <class L1, class L2, class... L3> 
void lock(L1&, L2&, L3&...);

The same can be applied to a non-member variadic template function try_lock_until, which locks all the mutex until a given time is reached that helps to avoid deadlock like lock(...).

template <class Clock, class Duration,
          class L1, class L2, class... L3> 
void try_lock_until(
          const chrono::time_point<Clock,Duration>& abs_time, 
          L1&, L2&, L3&...);

I have an implementation that follows the same design as the Boost function boost::lock(...). But this is quite complex.

As I can be missing something evident I wanted to know if:

is there a simple timed lock algorithm avoiding deadlock on multiple mutexes?

If no simple implementation exists, can this justify a proposal to Boost?

P.S. Please avoid posting complex solutions.

© Stack Overflow or respective owner

Related posts about c++

Related posts about c++0x