activemq-cpp-3.9.5
Semaphore.h
Go to the documentation of this file.
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18#ifndef _DECAF_UTIL_CONCURRENT_SEMAPHORE_H_
19#define _DECAF_UTIL_CONCURRENT_SEMAPHORE_H_
20
21#include <decaf/util/Config.h>
22
26
29
30namespace decaf {
31namespace util {
32namespace concurrent {
33
34 class SemSync;
35
141 class DECAF_API Semaphore {
142 private:
143
144 SemSync* sync;
145
146 private:
147
148 Semaphore( const Semaphore& );
149 Semaphore& operator= ( const Semaphore& );
150
151 public:
152
159 Semaphore( int permits );
160
169 Semaphore( int permits, bool fair );
170
171 virtual ~Semaphore();
172
197 void acquire();
198
217
237
274 bool tryAcquire( long long timeout, const TimeUnit& unit );
275
289 void release();
290
321 void acquire( int permits );
322
343 void acquireUninterruptibly( int permits );
344
369 bool tryAcquire( int permits );
370
413 bool tryAcquire( int permits, long long timeout, const TimeUnit& unit );
414
431 void release( int permits );
432
440 int availablePermits() const;
441
450
454 bool isFair() const;
455
462 std::string toString() const;
463
471 int getQueueLength() const;
472
476 bool hasQueuedThreads() const;
477
478 protected:
479
491 void reducePermits(int reduceBy);
492
501
502 };
503
504}}}
505
506#endif /* _DECAF_UTIL_CONCURRENT_SEMAPHORE_H_ */
The root interface in the collection hierarchy.
Definition Collection.h:69
int getQueueLength() const
Gets an estimated count of the number of threads that are currently waiting to acquire,...
bool tryAcquire(int permits, long long timeout, const TimeUnit &unit)
Acquires the given number of permits from this semaphore, if all become available within the given wa...
void acquireUninterruptibly()
Acquires a permit from this semaphore, blocking until one is available.
int availablePermits() const
Returns the current number of permits available in this semaphore.
bool tryAcquire()
Acquires a permit from this semaphore, only if one is available at the time of invocation.
void acquire(int permits)
Acquires the given number of permits from this semaphore, blocking until all are available,...
void acquireUninterruptibly(int permits)
Acquires the given number of permits from this semaphore, blocking until all are available.
decaf::util::Collection< decaf::lang::Thread * > * getQueuedThreads() const
Creates and returns a new Collection object that contains a best effort snapshot of the threads that ...
Semaphore(int permits)
Creates a Semaphore with the given number of permits and nonfair fairness setting.
void release()
Releases a permit, returning it to the semaphore.
void release(int permits)
Releases the given number of permits, returning them to the semaphore.
int drainPermits()
Acquires and returns all permits that are immediately available.
bool tryAcquire(int permits)
Acquires the given number of permits from this semaphore, only if all are available at the time of in...
std::string toString() const
Returns a string identifying this semaphore, as well as its state.
Semaphore(int permits, bool fair)
Creates a Semaphore with the given number of permits and the given fairness setting.
bool tryAcquire(long long timeout, const TimeUnit &unit)
Acquires a permit from this semaphore, if one becomes available within the given waiting time and the...
void acquire()
Acquires a permit from this semaphore, blocking until one is available, or the thread is interrupted.
void reducePermits(int reduceBy)
Reduces the number of available permits which can be useful for subclasses.
A TimeUnit represents time durations at a given unit of granularity and provides utility methods to c...
Definition TimeUnit.h:62
#define DECAF_API
Definition Config.h:29
Definition AbstractExecutorService.h:28
Definition AbstractCollection.h:33
Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.
Definition AprPool.h:25