acme
Foundational cross-platform layer of the ca2 framework
Toggle main menu visibility
Loading...
Searching...
No Matches
counter.h
1
#pragma once
2
3
4
#include "acme/platform/procedure.h"
5
6
7
namespace
parallelization
8
{
9
10
11
class
counter :
12
virtual
public
::particle
13
{
14
protected
:
15
16
17
::procedure m_procedureCompleted;
18
19
20
public
:
21
22
23
interlocked_count m_interlocked;
24
25
26
counter(::collection::count c, const ::procedure & procedureCompleted) :
27
m_interlocked(c),
28
m_procedureCompleted(procedureCompleted)
29
{
30
31
32
}
33
34
35
::collection::count operator ++()
36
{
37
38
::collection::count c = --m_interlocked;
39
40
if
(has_completed())
41
{
42
43
m_procedureCompleted();
44
45
}
46
47
return
c;
48
49
}
50
51
52
::collection::count operator ++(::i32)
53
{
54
55
::collection::count c = m_interlocked;
56
57
++(*this);
58
59
return
c;
60
61
}
62
63
64
bool
has_completed()
const
65
{
66
67
return
m_interlocked <= 0;
68
69
}
70
71
72
};
73
74
75
}
// namespace parallelization
76
77
78
79
//class counter32 :
80
// public manual_reset_happening
81
//{
82
//public:
83
//
84
//
85
// interlocked_int m_interlocked;
86
//
87
//
88
// counter32(::i32 lCount) : m_interlocked(lCount) {}
89
//
90
//
91
// ::i32 operator ++()
92
// {
93
//
94
// ::i32 i = --m_interlocked;
95
//
96
// if (i <= 0)
97
// {
98
//
99
// set_happening();
100
//
101
// }
102
//
103
// return i;
104
//
105
// }
106
//
107
//
108
// ::i32 operator ++(::i32)
109
// {
110
//
111
// ::i32 i = m_interlocked;
112
//
113
// ++(*this);
114
//
115
// return i;
116
//
117
// }
118
//
119
//};
120
//
121
//
122
//
parallelization
counter.h
Generated by
1.17.0