diff options
Diffstat (limited to 'doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp')
-rw-r--r-- | doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp | 115 |
1 files changed, 115 insertions, 0 deletions
diff --git a/doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp b/doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp new file mode 100644 index 000000000..25068b801 --- /dev/null +++ b/doc/codesnippets/doc/src/snippets/code/src_corelib_thread_qmutex.cpp @@ -0,0 +1,115 @@ +//! [0] +number = 6 + +def method1(): + number *= 5 + number /= 4 + +def method2(): + number *= 3 + number /= 2 +//! [0] + + +//! [1] +# method1() +number *= 5 # number is now 30 +number /= 4 # number is now 7 + +# method2() +number *= 3 # number is now 21 +number /= 2 # number is now 10 +//! [1] + + +//! [2] +# Thread 1 calls method1() +number *= 5 # number is now 30 + +# Thread 2 calls method2(). +# +# Most likely Thread 1 has been put to sleep by the operating +# system to allow Thread 2 to run. +number *= 3 # number is now 90 +number /= 2 # number is now 45 + +# Thread 1 finishes executing. +number /= 4 # number is now 11, instead of 10 +//! [2] + + +//! [3] +mutex = QMutex() +number = 6 + +def method1(): + mutex.lock() + number *= 5 + number /= 4 + mutex.unlock() + +def method2(): + mutex.lock() + number *= 3 + number /= 2 + mutex.unlock() +//! [3] + + +//! [4] +def complexFunction(flag): + mutex.lock() + + retVal = 0 + + if flag == 0 or flag == 1: + mutex.unlock() + return moreComplexFunction(flag) + elif flag == 2: + status = anotherFunction() + if status < 0: + mutex.unlock() + return -2 + retVal = status + flag + else: + if flag > 10: + mutex.unlock() + return -1 + + mutex.unlock() + return retVal +//! [4] + + +//! [5] +def complexFunction(flag): + locker = QMutexLocker(mutex) + + retVal = 0 + + if flag == 0 or flag == 1: + return moreComplexFunction(flag) + elif flag == 2: + status = anotherFunction() + if status < 0: + return -2 + retVal = status + flag + else: + if flag > 10: + return -1 + + return retVal +//! [5] + + +//! [6] +class SignalWaiter: + def __init__(mutex): + self.locker = mutex + + def waitForSignal(): + # ... + while not signalled: + waitCondition.wait(self.locker.mutex()) + # ... +//! [6] |