OnixS C++ B3 BOE Binary Order Entry
1.2.0
API Documentation
Home
Contents
Namespaces
Classes
Files
File List
File Members
OnixS
B3
BOE
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/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.
32
class
ONIXS_B3_BOE_EXPORTED
Semaphore
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
}
ONIXS_B3_BOE_EXPORTED
#define ONIXS_B3_BOE_EXPORTED
Definition:
Compiler.h:181
ABI.h
OnixS
Definition:
Defines.h:40
OnixS::B3::BOE::Threading::Semaphore
Semaphore.
Definition:
Semaphore.h:32