From bd0f3345a938b35ce6a12f6150373b0955b8dd12 Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 10 Jul 2011 15:24:15 -0500 Subject: Add Qt3 development HEAD version --- doc/html/qsemaphore.html | 149 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 149 insertions(+) create mode 100644 doc/html/qsemaphore.html (limited to 'doc/html/qsemaphore.html') diff --git a/doc/html/qsemaphore.html b/doc/html/qsemaphore.html new file mode 100644 index 0000000..d789229 --- /dev/null +++ b/doc/html/qsemaphore.html @@ -0,0 +1,149 @@ + + + + + +QSemaphore Class + + + + + + + +
+ +Home + | +All Classes + | +Main Classes + | +Annotated + | +Grouped Classes + | +Functions +

QSemaphore Class Reference

+ +

The QSemaphore class provides a robust integer semaphore. +More... +

All the functions in this class are thread-safe when Qt is built with thread support.

+

#include <qsemaphore.h> +

List of all member functions. +

Public Members

+ +

Detailed Description

+ + + +The QSemaphore class provides a robust integer semaphore. +

+ +

A QSemaphore can be used to serialize thread execution, in a +similar way to a QMutex. A semaphore differs from a mutex, in +that a semaphore can be accessed by more than one thread at a +time. +

For example, suppose we have an application that stores data in a +large tree structure. The application creates 10 threads +(commonly called a thread pool) to perform searches on the tree. +When the application searches the tree for some piece of data, it +uses one thread per base node to do the searching. A semaphore +could be used to make sure that two threads don't try to search +the same branch of the tree at the same time. +

A non-computing example of a semaphore would be dining at a +restuarant. A semaphore is initialized to have a maximum count +equal to the number of chairs in the restuarant. As people +arrive, they want a seat. As seats are filled, the semaphore is +accessed, once per person. As people leave, the access is +released, allowing more people to enter. If a party of 10 people +want to be seated, but there are only 9 seats, those 10 people +will wait, but a party of 4 people would be seated (taking the +available seats to 5, making the party of 10 people wait longer). +

When a semaphore is created it is given a number which is the +maximum number of concurrent accesses it will permit. Accesses to +the sempahore are gained using operator++() or operator+=(), and +released with operator--() or operator-=(). The number of +accesses allowed is retrieved with available(), and the total +number with total(). Note that the incrementing functions will +block if there aren't enough available accesses. Use tryAccess() +if you want to acquire accesses without blocking. +

See also Environment Classes and Threading. + +


Member Function Documentation

+

QSemaphore::QSemaphore ( int maxcount ) +

+Creates a new semaphore. The semaphore can be concurrently +accessed at most maxcount times. + +

QSemaphore::~QSemaphore () [virtual] +

+Destroys the semaphore. +

Warning: If you destroy a semaphore that has accesses in use the +resultant behavior is undefined. + +

int QSemaphore::available () const +

+Returns the number of accesses currently available to the +semaphore. + +

int QSemaphore::operator++ ( int ) +

+Postfix ++ operator. +

Try to get access to the semaphore. If available() == 0, this +call will block until it can get access, i.e. until available() > +0. + +

int QSemaphore::operator+= ( int n ) +

+Try to get access to the semaphore. If available() < n, this +call will block until it can get all the accesses it wants, i.e. +until available() >= n. + +

int QSemaphore::operator-- ( int ) +

+Postfix -- operator. +

Release access of the semaphore. This wakes all threads waiting +for access to the semaphore. + +

int QSemaphore::operator-= ( int n ) +

+Release n accesses to the semaphore. + +

int QSemaphore::total () const +

+Returns the total number of accesses to the semaphore. + +

bool QSemaphore::tryAccess ( int n ) +

+Try to get access to the semaphore. If available() < n, this +function will return FALSE immediately. If available() >= n, +this function will take n accesses and return TRUE. This +function does not block. + + +

+This file is part of the Qt toolkit. +Copyright © 1995-2007 +Trolltech. All Rights Reserved.


+ +
Copyright © 2007 +TrolltechTrademarks +
Qt 3.3.8
+
+ -- cgit v1.2.1