aboutsummaryrefslogtreecommitdiffstats
path: root/doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qsemaphore.cpp
blob: da809ec1269d27a202053070982e3fed6688e7cb (plain)
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
//! [0]
sem = QSemaphore(5)      # sem.available() == 5

sem.acquire(3)           # sem.available() == 2
sem.acquire(2)           # sem.available() == 0
sem.release(5)           # sem.available() == 5
sem.release(5)           # sem.available() == 10

sem.tryAcquire(1)        # sem.available() == 9, returns true
sem.tryAcquire(250)      # sem.available() == 9, returns false
//! [0]


//! [1]
sem = QSemaphore(5)     # a semaphore that guards 5 resources
sem.acquire(5)          # acquire all 5 resources
sem.release(5)          # release the 5 resources
sem.release(10)         # "create" 10 new resources
//! [1]


//! [2]
sem = QSemaphore(5)      # sem.available() == 5
sem.tryAcquire(250)      # sem.available() == 5, returns false
sem.tryAcquire(3)        # sem.available() == 2, returns true
//! [2]


//! [3]
sem = QSemaphore(5)             # sem.available() == 5
sem.tryAcquire(250, 1000)       # sem.available() == 5, waits 1000 milliseconds and returns false
sem.tryAcquire(3, 30000)        # sem.available() == 2, returns true without waiting
//! [3]