OnixS C++ CBOE CFE Binary Order Entry (BOE) Handler
1.11.0
API documentation
Home
Contents
Namespaces
Classes
Files
File List
File Members
include
OnixS
CboeCFE
Trading
BOE
Threading
Mutex.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
#pragma once
20
21
#include <
OnixS/CboeCFE/Trading/BOE/ABI.h
>
22
23
namespace
OnixS
24
{
25
namespace
CboeCFE
26
{
27
namespace
Trading
28
{
29
namespace
BOE
30
{
31
namespace
Threading
32
{
33
34
/// Mutex.
35
///
36
/// Protects resources from simultaneous access by multiple threads.
37
///
38
/// Only one thread at a time can own instance of this class.
39
///
40
/// This implementation is optimized for locking threads that are in the same process.
41
///
42
/// \note It is NOT suitable for interprocess synchronization.
43
/// \note Recursive locking is NOT supported.
44
class
ONIXS_CBOE_CFE_BOE_API
Mutex
45
{
46
public
:
47
friend
class
Condition
;
48
49
/// Initializes the instance.
50
Mutex
();
51
52
/// Destructs the instance.
53
~
Mutex
();
54
55
/// Acquires the lock ownership.
56
///
57
/// If the mutex is already occupied by another thread
58
/// blocks the current thread and waits until it
59
/// will be released by the owner.
60
void
acquire();
61
62
/// Tries to acquires the lock ownership.
63
///
64
/// \return `false` if the mutex is already occupied by another thread,
65
/// otherwise - `true`.
66
bool
tryAcquire();
67
68
/// Releases the ownership (lock) and
69
/// unblocks one of the waiting threads.
70
void
release();
71
72
private
:
73
void
*impl_;
74
75
// Copying & assignment is prohibited.
76
Mutex
(
const
Mutex
&);
77
Mutex
&operator=(
const
Mutex
&);
78
};
79
80
}
81
}
82
}
83
}
84
}
ABI.h
OnixS
Definition:
BinaryMessage.h:29
OnixS::CboeCFE::Trading::BOE::Threading::Mutex
Definition:
Mutex.h:44
OnixS::CboeCFE::Trading::BOE::Threading::Condition
Definition:
Condition.h:36