xtd 0.2.0
Loading...
Searching...
No Matches
semaphore.hpp
Go to the documentation of this file.
1
4#pragma once
6#include "wait_handle.hpp"
7#include "../icomparable.hpp"
8#include "../iequatable.hpp"
9#include "../int32_object.hpp"
10
12namespace xtd {
14 namespace threading {
38 class core_export_ semaphore : public wait_handle, public icomparable<semaphore>, public iequatable<semaphore> {
39 class semaphore_base;
40 class named_semaphore;
41 class unnamed_semaphore;
42 struct data;
43 public:
45
59 explicit semaphore(const string& name);
70 explicit semaphore(const string& name, bool& created_new);
76 explicit semaphore(int32 initial_count);
88 semaphore(int32 initial_count, const string& name);
101 semaphore(int32 initial_count, const string& name, bool& created_new);
109 semaphore(int32 initial_count, int32 maximum_count);
124 semaphore(int32 initial_count, int32 maximum_count, const string& name);
139 semaphore(int32 initial_count, int32 maximum_count, const string& name, bool& created_new);
141
143 template <typename char_t>
144 explicit semaphore(const char_t* name) : semaphore(string(name)) {}
145 ~semaphore();
147
149
151 intptr handle() const noexcept override;
152 void handle(intptr value) override;
154
156
158 void close() override;
159
160 int32 compare_to(const semaphore& value) const noexcept override;
161
162 using object::equals;
163 bool equals(const semaphore& value) const noexcept override;
164
171 int32 release();
179 int32 release(int32 release_count);
181
183
193 static semaphore open_existing(const string& name);
194
202 static bool try_open_existing(const string& name, semaphore& result) noexcept;
204
205 protected:
207
209 bool signal() override;
210
211 bool wait(int32 milliseconds_timeout) override;
213
214 private:
215 void create(int32 initial_count, int32 maximum_count, bool& created_new);
216 xtd::sptr<semaphore_base> semaphore_;
217 xtd::sptr<data> data_;
218 };
219 }
220}
Represents text as a sequence of character units.
Definition basic_string.hpp:79
Defines a generalized comparison method that a value type or class implements to create a type-specif...
Definition icomparable.hpp:21
Defines a generalized method that a value type or class implements to create a type-specific method f...
Definition iequatable.hpp:22
Limits the number of threads that can access a resource or pool of resources concurrently.
Definition semaphore.hpp:38
semaphore(const string &name, bool &created_new)
nitializes a new instance of the xtd::threading::semaphore class, specifying optionally specifying th...
semaphore(int32 initial_count, const string &name, bool &created_new)
nitializes a new instance of the xtd::threading::semaphore class, specifying the initial number of en...
semaphore(int32 initial_count, int32 maximum_count, const string &name, bool &created_new)
nitializes a new instance of the xtd::threading::semaphore class, specifying the initial number of en...
semaphore(int32 initial_count, int32 maximum_count, const string &name)
Initializes a new instance of the xtd::threading::semaphore class, specifying the initial number of e...
semaphore(int32 initial_count, int32 maximum_count)
Initializes a new instance of the xtd::threading::semaphore class, specifying the initial number of e...
semaphore(const string &name)
nitializes a new instance of the xtd::threading::semaphore class, specifying optionally specifying th...
semaphore()
Initializes a new instance of the xtd::threading::semaphore class.
semaphore(int32 initial_count, const string &name)
nitializes a new instance of the xtd::threading::semaphore class, specifying the initial number of en...
intptr handle() const noexcept override
Gets the native operating system handle.
semaphore(int32 initial_count)
Initializes a new instance of the xtd::threading::semaphore class, specifying the initial number of e...
Encapsulates operating system specific objects that wait for exclusive access to shared resources.
Definition wait_handle.hpp:52
#define core_export_
Define shared library export.
Definition core_export.hpp:13
int32_t int32
Represents a 32-bit signed integer.
Definition int32.hpp:23
intmax_t intptr
Represent a pointer or a handle.
Definition intptr.hpp:23
std::shared_ptr< type_t > sptr
The xtd::sptr object is a shared pointer.
Definition sptr.hpp:25
signal
Specifies signals that can interrupt the current process.
Definition signal.hpp:18
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition xtd_about_box.hpp:10
Contains xtd::threading::semaphore_full_exception exception.
Contains xtd::threading::wait_handle exception.