<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                # QMutexLocker Class Reference ## [[QtCore](index.htm) module] 該QMutexLocker類是簡化了鎖定和解鎖互斥一個方便的類。[More...](#details) ### Methods * `__init__ (self, QMutex?m)` * `QMutex mutex (self)` * `relock (self)` * `unlock (self)` ### Special Methods * `object __enter__ (self)` * `__exit__ (self, object?type, object?value, object?traceback)` * * * ## Detailed Description 該QMutexLocker類是簡化了鎖定和解鎖互斥一個方便的類。 鎖定和解鎖[QMutex](qmutex.html)在復雜的函數和語句或異常處理代碼很容易出錯,難以調試。 QMutexLocker可以在這樣的情況下使用,以確保始終良好定義的互斥的狀態。 QMutexLocker應該在一個函數中創建一個地方[QMutex](qmutex.html)需要被鎖定。創建QMutexLocker當互斥被鎖定。你可以解鎖和重新鎖定互斥與`unlock()`和`relock()`。如果被鎖定,當QMutexLocker被銷毀互斥將被解鎖。 例如,這種復雜的功能可以鎖定一個[QMutex](qmutex.html)在進入功能和解鎖互斥量在所有的出口點: ``` int complexFunction(int flag) { mutex.lock(); int retVal = 0; switch (flag) { case 0: case 1: retVal = moreComplexFunction(flag); break; case 2: { int status = anotherFunction(); if (status < 0) { mutex.unlock(); return -2; } retVal = status + flag; } break; default: if (flag > 10) { mutex.unlock(); return -1; } break; } mutex.unlock(); return retVal; } ``` 這個例子功能將變得更加復雜,因為它是發展,從而增加將發生錯誤的可能性。 使用QMutexLocker大大簡化了代碼,并使其更具可讀性: ``` int complexFunction(int flag) { QMutexLocker locker(&mutex); int retVal = 0; switch (flag) { case 0: case 1: return moreComplexFunction(flag); case 2: { int status = anotherFunction(); if (status < 0) return -2; retVal = status + flag; } break; default: if (flag > 10) return -1; break; } return retVal; } ``` 現在,互斥總是會在QMutexLocker對象被銷毀(因為當函數返回解鎖`locker`是一個自動變量) 。 同樣的原則也適用于拋出和捕獲異常的代碼。未陷入已鎖定互斥鎖功能異常有沒有辦法解鎖互斥前異常堆棧向上傳遞到調用函數的。 QMutexLocker還提供了一個`mutex()`成員函數,返回在其上QMutexLocker運行互斥。這對于需要訪問互斥的代碼很有用,比如[QWaitCondition.wait](qwaitcondition.html#wait)( ) 。例如: ``` class SignalWaiter { private: QMutexLocker locker; public: SignalWaiter([QMutex](qmutex.html) *mutex) : locker(mutex) { } void waitForSignal() { ... while (!signalled) waitCondition.wait(locker.mutex()); ... } }; ``` * * * ## Method Documentation ``` QMutexLocker.__init__ (self, QMutex?m) ``` 構造一個[QMutexLocker](qmutexlocker.html)和鎖_mutex_。互斥鎖將被解鎖時,[QMutexLocker](qmutexlocker.html)被破壞。如果_mutex_是零,[QMutexLocker](qmutexlocker.html)什么都不做。 **See also** [QMutex.lock](qmutex.html#lock)( ) 。 ``` QMutex QMutexLocker.mutex (self) ``` [ 返回一個指針,指向被鎖在構造函數中的互斥體。 ``` QMutexLocker.relock (self) ``` 重新鎖定未鎖定互斥鎖儲物柜。 ](qmutex.html) [**See also**](qmutex.html) [unlock](qmutexlocker.html#unlock)( ) 。 ``` QMutexLocker.unlock (self) ``` 這個解鎖互斥鎖固劑。您可以使用`relock()`再次鎖定。它并不需要被破壞時被鎖定。 **See also** [relock](qmutexlocker.html#relock)( ) 。 ``` object QMutexLocker.__enter__ (self) ``` ``` QMutexLocker.__exit__ (self, object?type, object?value, object?traceback) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看