OnixS C++ FIX Engine  4.12.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/FIXEngine/ABI.h>
23 
24 namespace OnixS {
25 namespace Threading {
26 /// The limits number of threads that can access the shared resource simultaneously.
28 {
29 public:
30  /// Initializes the instance with the given value of
31  /// the "count". The @param count indicates the initial "count"
32  /// for the semaphore. The state of the semaphore is signaled
33  /// when its count is greater than zero and
34  /// non-signaled when it is zero.
35  Semaphore(unsigned int count = 1);
36 
37  /// Destructs the object.
38  ~Semaphore();
39 
40  /// Decrements the semaphore "counter" by one.
41  /// If the semaphore "counter" is already zero,
42  /// blocks the thread until the semaphore "count"
43  /// becomes greater than zero.
44  void acquire();
45 
46  /// Tries to acquire the semaphore object. If
47  /// its "counter" is already zero, returns
48  /// @c false. In all cases, it doesn't block
49  /// the thread and quites immediately.
50  bool tryAcquire();
51 
52  /// Increments the semaphore "counter" by one.
53  /// If there are other threads waiting for
54  /// the object, it blocks one the them.
55  void release();
56 
57 private:
58  // Implementation details.
59  void * impl_;
60 
61  // Copying & assignment is prohibited.
62 
63  Semaphore(const Semaphore &);
64  Semaphore & operator = (const Semaphore &);
65 };
66 }
67 }
#define ONIXS_FIXENGINE_API
Definition: ABI.h:45
The limits number of threads that can access the shared resource simultaneously.
Definition: Semaphore.h:27