OnixS C++ B3 BOE Binary Order Entry  1.2.0
API Documentation
Semaphore.h
Go to the documentation of this file.
1 /*
2 * Copyright Onix Solutions Limited [OnixS]. All rights reserved.
3 *
4 * This software owned by Onix Solutions Limited [OnixS] and is protected by copyright law
5 * and international copyright treaties.
6 *
7 * Access to and use of the software is governed by the terms of the applicable OnixS Software
8 * Services Agreement (the Agreement) and Customer end user license agreements granting
9 * a non-assignable, non-transferable and non-exclusive license to use the software
10 * for it's own data processing purposes under the terms defined in the Agreement.
11 *
12 * Except as otherwise granted within the terms of the Agreement, copying or reproduction of any part
13 * of this source code or associated reference material to any other location for further reproduction
14 * or redistribution, and any amendments to this copyright notice, are expressly prohibited.
15 *
16 * Any reproduction or redistribution for sale or hiring of the Software not in accordance with
17 * the terms of the Agreement is a violation of copyright law.
18 */
19 
20 #pragma once
21 
22 #include <OnixS/B3/BOE/ABI.h>
23 
24 namespace OnixS {
25 namespace B3 {
26 namespace BOE {
27 namespace Threading {
28 
29 /// Semaphore.
30 ///
31 /// Limits number of threads that can access the shared resource simultaneously.
33 {
34 public:
35  /// Constructor.
36  ///
37  /// The state of the semaphore is signaled
38  /// when its counter is greater than zero and
39  /// non-signaled when it is zero.
40  ///
41  /// \param count the counter value.
42  Semaphore(unsigned int count = 1);
43 
44  ~Semaphore();
45 
46  /// Decrements the counter by one.
47  ///
48  /// If the counter is already zero,
49  /// blocks the thread until the counter
50  /// becomes greater than zero.
51  void acquire();
52 
53  /// Tries to decrement the counter by one.
54  ///
55  /// \return `false' if the counter is already zero,
56  /// otherwise - `true`.
57  bool tryAcquire();
58 
59  /// Increments the counter by one.
60  void release();
61 
62 private:
63  void * impl_;
64 
65  // Copying & assignment is prohibited.
66  Semaphore(const Semaphore &);
67  Semaphore & operator = (const Semaphore &);
68 };
69 }
70 }
71 }
72 }
#define ONIXS_B3_BOE_EXPORTED
Definition: Compiler.h:181
Definition: Defines.h:40