CallbackWaitLock.h
Go to the documentation of this file.
1 /*
2  * This file is part of ArmarX.
3 *
4 * Copyright (C) 2011-2016, High Performance Humanoid Technologies (H2T), Karlsruhe Institute of Technology (KIT), all rights reserved.
5  *
6  * ArmarX is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License version 2 as
8  * published by the Free Software Foundation.
9  *
10  * ArmarX is distributed in the hope that it will be useful, but
11  * WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License
16  * along with this program. If not, see <http://www.gnu.org/licenses/>.
17  *
18  * @package ArmarXCore::core
19  * @author Clemens Wallrath ( uagzs at student dot kit dot edu )
20  * @date 2016
21  * @copyright http://www.gnu.org/licenses/gpl.txt
22  * GNU General Public License
23  */
24 
25 #pragma once
26 
27 #include "LocalTimeServer.h"
28 
29 #include <condition_variable>
30 #include <mutex>
31 
32 namespace armarx
33 {
34  /**
35  * @class CallbackWaitLock
36  * @brief CallbackWaitLock is used to block a thread and unblock it from another thread via callback
37  * @ingroup VirtualTime
38  *
39  * When wait() is called, the calling thread is blocked until call() is called from another thread.
40  * This is mainly intended as helper for TimeUtil::Sleep(,,,).
41  */
42  class [[deprecated("Use std::binary_semaphore instead.")]] CallbackWaitLock :
43  public CallbackReceiver
44  {
45  public:
47 
48  void call() override;
49 
50  /**
51  * @brief wait blocks the calling thread until CallbackWaitLock::call() is called.
52  */
53  void wait();
54 
55  protected:
56  std::condition_variable condWait;
57  std::mutex waitMutex;
58  /**
59  * whether call() was called (to prevent race conditions)
60  */
61  bool called;
62  };
63 }
armarx::CallbackWaitLock::called
bool called
whether call() was called (to prevent race conditions)
Definition: CallbackWaitLock.h:61
armarx::CallbackWaitLock
CallbackWaitLock is used to block a thread and unblock it from another thread via callback.
Definition: CallbackWaitLock.h:42
armarx::CallbackWaitLock::condWait
std::condition_variable condWait
Definition: CallbackWaitLock.h:56
LocalTimeServer.h
armarx::CallbackReceiver
Used by CallbackWaitLock.
Definition: LocalTimeServer.h:42
std
Definition: Application.h:66
armarx::CallbackWaitLock::waitMutex
std::mutex waitMutex
Definition: CallbackWaitLock.h:57
armarx::armem::base::detail::call
bool call(FunctionT &&func, ChildT &&child)
Definition: iteration_mixins.h:39
armarx
This file offers overloads of toIce() and fromIce() functions for STL container types.
Definition: ArmarXTimeserver.cpp:28