Lunchbox  1.13.0
Multi-threaded C++ toolbox library for all application developers creating high-performance multi-threaded programs.
timedLock.h
1 
2 /* Copyright (c) 2005-2014, Stefan Eilemann <eile@equalizergraphics.com>
3  *
4  * This library is free software; you can redistribute it and/or modify it under
5  * the terms of the GNU Lesser General Public License version 2.1 as published
6  * by the Free Software Foundation.
7  *
8  * This library is distributed in the hope that it will be useful, but WITHOUT
9  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
10  * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
11  * details.
12  *
13  * You should have received a copy of the GNU Lesser General Public License
14  * along with this library; if not, write to the Free Software Foundation, Inc.,
15  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
16  */
17 
18 #ifndef LUNCHBOX_TIMEDLOCK_H
19 #define LUNCHBOX_TIMEDLOCK_H
20 
21 #include <lunchbox/api.h>
22 #include <lunchbox/types.h>
23 #include <boost/noncopyable.hpp>
24 
25 namespace lunchbox
26 {
27 namespace detail { class TimedLock; }
28 
35 class TimedLock : public boost::noncopyable
36 {
37 public:
39  LUNCHBOX_API TimedLock();
40 
42  LUNCHBOX_API ~TimedLock();
43 
52  LUNCHBOX_API bool set( const uint32_t timeout = LB_TIMEOUT_INDEFINITE );
53 
55  LUNCHBOX_API void unset();
56 
63  LUNCHBOX_API bool trySet();
64 
71  LUNCHBOX_API bool isSet();
72 
73 private:
74  detail::TimedLock* const _impl;
75 }; // LB_DEPRECATED;
76 }
77 #endif //LUNCHBOX_TIMEDLOCK_H
void unset()
Release the lock.
Defines export visibility macros for library Lunchbox.
bool isSet()
Test if the lock is set.
Basic type definitions not provided by the operating system.
bool trySet()
Attempt to set the lock.
A mutex with timeout capabilities.
Definition: timedLock.h:35
~TimedLock()
Destruct the lock.
#define LB_TIMEOUT_INDEFINITE
Constant defining 'wait forever' in methods with wait parameters.
Definition: types.h:80
bool set(const uint32_t timeout=LB_TIMEOUT_INDEFINITE)
Set the lock.
Abstraction layer and common utilities for multi-threaded programming.
Definition: algorithm.h:32
TimedLock()
Construct a new timed lock.