<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>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                # QReadWriteLock Class Reference ## [[QtCore](index.htm) module] 該QReadWriteLock類提供的讀寫鎖。[More...](#details) ### Types * `enum RecursionMode { NonRecursive, Recursive }` ### Methods * `__init__ (self)` * `__init__ (self, RecursionMode?recursionMode)` * `lockForRead (self)` * `lockForWrite (self)` * `bool tryLockForRead (self)` * `bool tryLockForRead (self, int?timeout)` * `bool tryLockForWrite (self)` * `bool tryLockForWrite (self, int?timeout)` * `unlock (self)` * * * ## Detailed Description 該QReadWriteLock類提供的讀寫鎖。 讀寫鎖是一個同步工具,用于保護可用于讀取和寫入訪問的資源。如果你想允許多個線程同時有只讀訪問這個類型的鎖是有用的,但只要有一個線程要寫入的資源,所有其它線程必須被阻止,直到寫入完成。 在許多情況下, QReadWriteLock是一個直接競爭者[QMutex](qmutex.html)。 QReadWriteLock是一個不錯的選擇,如果有許多并發讀取和寫入發生很少。 例如: ``` QReadWriteLock lock; void ReaderThread.run() { ... lock.lockForRead(); read_file(); lock.unlock(); ... } void WriterThread.run() { ... lock.lockForWrite(); write_file(); lock.unlock(); ... } ``` 以確保作家不是由讀者永遠阻塞,讀者試圖獲取鎖不會如果有阻塞作家等待訪問,即使鎖定目前僅由其它讀者訪問成功。此外,如果該鎖由一個作家訪問和另一位作家進來,那筆者將優先于該也可能會等待任何讀者。 喜歡[QMutex](qmutex.html),一個QReadWriteLock可以在構建時被遞歸鎖定由同一個線程[QReadWriteLock.RecursionMode](qreadwritelock.html#RecursionMode-enum)。在這種情況下,[unlock](qreadwritelock.html#unlock)( )必須被調用的次數相同[lockForWrite](qreadwritelock.html#lockForWrite)()或[lockForRead](qreadwritelock.html#lockForRead)( )被調用。需要注意的是試圖以遞歸方式鎖定,也就是說,它是不可能的讀鎖,在已經鎖定寫(反之亦然)一個線程,當鎖定類型不能改變。 * * * ## Type Documentation ``` QReadWriteLock.RecursionMode ``` | Constant | Value | Description | | --- | --- | --- | | `QReadWriteLock.Recursive` | `1` | 在這種模式下,一個線程可以鎖定同一[QReadWriteLock](qreadwritelock.html)多次與互斥不會被解鎖,直到相應數量的[unlock](qreadwritelock.html#unlock)( )的調用而制定的。 | | `QReadWriteLock.NonRecursive` | `0` | 在這種模式下,一個線程可能僅鎖定[QReadWriteLock](qreadwritelock.html)一次。 | 這個枚舉被引入或修改的Qt 4.4 。 **See also** [QReadWriteLock](qreadwritelock.html#QReadWriteLock)( ) 。 * * * ## Method Documentation ``` QReadWriteLock.__init__ (self) ``` 構造一個[QReadWriteLock](qreadwritelock.html)在對象[NonRecursive](qreadwritelock.html#RecursionMode-enum)模式。 **See also** [lockForRead](qreadwritelock.html#lockForRead)()和[lockForWrite](qreadwritelock.html#lockForWrite)( ) 。 ``` QReadWriteLock.__init__ (self, RecursionMode?recursionMode) ``` 構造一個[QReadWriteLock](qreadwritelock.html)在給定的對象_recursionMode_。 此功能被引入Qt的4.4 。 **See also** [lockForRead](qreadwritelock.html#lockForRead)( )[lockForWrite](qreadwritelock.html#lockForWrite)()和[RecursionMode](qreadwritelock.html#RecursionMode-enum)。 ``` QReadWriteLock.lockForRead (self) ``` 鎖讀鎖。此函數將阻塞當前線程,如果任何線程(包括當前)已鎖定用于寫入。 **See also** [unlock](qreadwritelock.html#unlock)( )[lockForWrite](qreadwritelock.html#lockForWrite)()和[tryLockForRead](qreadwritelock.html#tryLockForRead)( ) 。 ``` QReadWriteLock.lockForWrite (self) ``` 鎖寫鎖。此函數將阻塞當前線程,如果另一個線程已鎖定讀取或寫入。 **See also** [unlock](qreadwritelock.html#unlock)( )[lockForRead](qreadwritelock.html#lockForRead)()和[tryLockForWrite](qreadwritelock.html#tryLockForWrite)( ) 。 ``` bool QReadWriteLock.tryLockForRead (self) ``` 嘗試讀鎖。如果獲得了鎖,這個函數返回True ,否則返回,而不是等待該鎖虛假變得可用,也就是說,它不會阻塞。 如果另一個線程已鎖定用于寫入的鎖定嘗試將會失敗。 如果獲得了鎖,該鎖必須被解鎖[unlock](qreadwritelock.html#unlock)( )之前,另一個線程可以成功地將其鎖定。 **See also** [unlock](qreadwritelock.html#unlock)()和[lockForRead](qreadwritelock.html#lockForRead)( ) 。 ``` bool QReadWriteLock.tryLockForRead (self, int?timeout) ``` 這是一個重載函數。 嘗試讀鎖。如果獲得了鎖這個函數返回True,否則返回False 。如果另一個線程已鎖定的文筆,這個函數將等待最多_timeout_毫秒為鎖變得可用。 注意:傳遞一個負數作為_timeout_相當于調用[lockForRead](qreadwritelock.html#lockForRead)( ) ,即該函數將一直等待,直到鎖可以鎖定讀數時_timeout_是負的。 如果獲得了鎖,該鎖必須被解鎖[unlock](qreadwritelock.html#unlock)( )之前,另一個線程可以成功地將其鎖定。 **See also** [unlock](qreadwritelock.html#unlock)()和[lockForRead](qreadwritelock.html#lockForRead)( ) 。 ``` bool QReadWriteLock.tryLockForWrite (self) ``` 嘗試寫鎖。如果獲得了鎖,則該函數返回True,否則,它會立即返回False 。 如果另一個線程已鎖定用于讀取或寫入鎖定的嘗試將會失敗。 如果獲得了鎖,該鎖必須被解鎖[unlock](qreadwritelock.html#unlock)( )之前,另一個線程可以成功地將其鎖定。 **See also** [unlock](qreadwritelock.html#unlock)()和[lockForWrite](qreadwritelock.html#lockForWrite)( ) 。 ``` bool QReadWriteLock.tryLockForWrite (self, int?timeout) ``` 這是一個重載函數。 嘗試寫鎖。如果獲得了鎖這個函數返回True,否則返回False 。如果另一個線程已鎖定用于讀取或寫入時,此功能會等待最多_timeout_毫秒為鎖變得可用。 注意:傳遞一個負數作為_timeout_相當于調用[lockForWrite](qreadwritelock.html#lockForWrite)( ) ,即該函數將一直等待,直到鎖可以鎖定寫入時_timeout_是負的。 如果獲得了鎖,該鎖必須被解鎖[unlock](qreadwritelock.html#unlock)( )之前,另一個線程可以成功地將其鎖定。 **See also** [unlock](qreadwritelock.html#unlock)()和[lockForWrite](qreadwritelock.html#lockForWrite)( ) 。 ``` QReadWriteLock.unlock (self) ``` 解除鎖定。 試圖解鎖未鎖定的鎖是一個錯誤,將導致程序終止。 **See also** [lockForRead](qreadwritelock.html#lockForRead)( )[lockForWrite](qreadwritelock.html#lockForWrite)( )[tryLockForRead](qreadwritelock.html#tryLockForRead)()和[tryLockForWrite](qreadwritelock.html#tryLockForWrite)( ) 。
                  <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>

                              哎呀哎呀视频在线观看