File: qsemaphore.html

package info (click to toggle)
qt-embedded 2.3.2-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 68,608 kB
  • ctags: 45,998
  • sloc: cpp: 276,654; ansic: 71,987; makefile: 29,074; sh: 12,305; yacc: 2,465; python: 1,863; perl: 481; lex: 480; xml: 68; lisp: 15
file content (104 lines) | stat: -rw-r--r-- 5,734 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Qt Toolkit - QSemaphore Class</title><style type="text/css"><!--
h3.fn,span.fn { margin-left: 1cm; text-indent: -1cm; }
a:link { color: #004faf; text-decoration: none }
a:visited { color: #672967; text-decoration: none }body { background: white; color: black; }
--></style>
</head><body bgcolor="#ffffff">

<table width="100%">
<tr><td><a href="index.html">
<img width="100" height="100" src="qtlogo.png"
alt="Home" border="0"><img width="100"
height="100" src="face.png" alt="Home" border="0">
</a><td valign=top><div align=right><img src="dochead.png" width="472" height="27"><br>
<a href="classes.html"><b>Classes</b></a>
-<a href="annotated.html">Annotated</a>
- <a href="hierarchy.html">Tree</a>
-<a href="functions.html">Functions</a>
-<a href="index.html">Home</a>
-<a href="topicals.html"><b>Structure</b></a>
</div>
</table>

<h1 align=center>QSemaphore Class Reference</h1><br clear="all">
<p>
The QSemaphore class provides a robust integer semaphore.
<a href="#details">More...</a>
<p>
<code>#include &lt;<a href="qthread-h.html">qthread.h</a>&gt;</code>
<p>
Inherits <a href="qt.html">Qt</a>.
<p><a href="qsemaphore-members.html">List of all member functions.</a>
<h2>Public Members</h2>
<ul>
<li><div class="fn"><a href="#713da9"><b>QSemaphore</b></a>(int)</div>
<li><div class="fn">virtual<a href="#ef3e81"><b>~QSemaphore</b></a>()</div>
<li><div class="fn">int<a href="#6ad36b"><b>available</b></a>()const</div>
<li><div class="fn">int<a href="#82a09e"><b>total</b></a>()const</div>
<li><div class="fn">int<a href="#b67829"><b>operator++</b></a>(int)</div>
<li><div class="fn">int<a href="#d55d93"><b>operator--</b></a>(int)</div>
<li><div class="fn">int<a href="#a1e515"><b>operator+=</b></a>(int)</div>
<li><div class="fn">int<a href="#bc4995"><b>operator-=</b></a>(int)</div>
</ul>
<hr><h2><a name="details"></a>Detailed Description</h2>
The QSemaphore class provides a robust integer semaphore.
<p>
QSemaphore can be used to serialize thread execution, similar to a
<a href="qmutex.html">QMutex</a>.  A semaphore differs from a mutex, in that a semaphore can be
accessed by more than one thread at a time.
<p>An example would be an application that stores data in a large tree
structure.  The application creates 10 threads (commonly called a
thread pool) to do 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 2 threads
don't try to search the same branch of the tree.
<p>A real world example of a semaphore would be dining at a restuarant.
A semaphore 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).

<hr><h2>Member Function Documentation</h2>
<h3 class="fn"><a name="713da9"></a>QSemaphore::QSemaphore(intmaxcount)</h3>
<p>Creates a new semaphore.  The semaphore can be concurrently accessed at
most <em>maxcount</em> times.
<h3 class="fn"><a name="ef3e81"></a>QSemaphore::~QSemaphore() <code>[virtual]</code></h3>
<p>Destroys the semaphore.
<h3 class="fn">int<a name="6ad36b"></a>QSemaphore::available()const</h3>
<p>This function returns the number of accesses currently available to
the semaphore.
<h3 class="fn">int<a name="b67829"></a>QSemaphore::operator++(int)</h3>
<p>Postfix ++ operator.
<p>Try to get access to the semaphore.  If <a href="#6ad36b">available()</a> is >= <a href="#82a09e">total()</a>,
this call will block until it can get access.
<h3 class="fn">int<a name="a1e515"></a>QSemaphore::operator+=(int<a href="n.html">n</a>)</h3>
<p>Try to get access to the semaphore.  If <a href="#6ad36b">available()</a> is >= <a href="#82a09e">total()</a>,
the calling thread blocks until it can get access.   The calling will
only get access from the semaphore if it can get all <em><a href="n.html">n</a></em> accesses
at once.
<h3 class="fn">int<a name="d55d93"></a>QSemaphore::operator--(int)</h3>
<p>Postfix -- operator.
<p>Release access of the semaphore.  This wakes all threads waiting for
access to the semaphore.
<h3 class="fn">int<a name="bc4995"></a>QSemaphore::operator-=(int<a href="n.html">n</a>)</h3>
<p>Release <em><a href="n.html">n</a></em> accesses to the semaphore.
<h3 class="fn">int<a name="82a09e"></a>QSemaphore::total()const</h3>
<p>This function returns the total number of accesses to the semaphore.
<hr><p>
Search the documentation, FAQ, qt-interest archive and more (uses
<a href="http://www.trolltech.com">www.trolltech.com</a>):<br>
<form method=post action="http://www.trolltech.com/search.cgi">
<input type=hidden name="version" value="2.3.2"><nobr>
<input size="50" name="search"><input type=submit value="Search">
</nobr></form><hr><p>
This file is part of the <a href="index.html">Qt toolkit</a>,
copyright &copy; 1995-2001
<a href="http://www.trolltech.com">Trolltech</a>, all rights reserved.<p><address><hr><div align="center">
<table width="100%" cellspacing="0" border="0"><tr>
<td>Copyright  2001 Trolltech<td><a href="http://www.trolltech.com/trademarks.html">Trademarks</a>
<td align="right"><div align="right">Qt version 2.3.2</div>
</table></div></address></body></html>