OnixS C++ FIX Engine
4.12.0
API Documentation
Home
Contents
Namespaces
Classes
Files
File List
File Members
OnixS
FIXEngine
Threading
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.
27
class
ONIXS_FIXENGINE_API
Semaphore
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
}
ONIXS_FIXENGINE_API
#define ONIXS_FIXENGINE_API
Definition:
ABI.h:45
OnixS::Threading::Semaphore
The limits number of threads that can access the shared resource simultaneously.
Definition:
Semaphore.h:27
ABI.h
OnixS
Definition:
Definitions.h:24