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

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # QSemaphore Class Reference ## [[QtCore](index.htm) module] 該QSemaphore類提供了一個通用的計數信號量。[More...](#details) ### Methods * `__init__ (self, int?n?=?0)` * `acquire (self, int?n?=?1)` * `int available (self)` * `release (self, int?n?=?1)` * `bool tryAcquire (self, int?n?=?1)` * `bool tryAcquire (self, int?n, int?timeout)` * * * ## Detailed Description 該QSemaphore類提供了一個通用的計數信號量。 信號量是互斥的推廣。當一個互斥只能被鎖定一次,有可能獲得一個信號量多次。信號量是通常用于保護一定數量的相同的資源。 信號量支持兩種基本操作,[acquire](qsemaphore.html#acquire)()和[release](qsemaphore.html#release)(): * acquire(_n_) tries to acquire _n_ resources. If there aren't that many resources available, the call will block until this is the case. * release(_n_) releases _n_ resources. 還有一個[tryAcquire](qsemaphore.html#tryAcquire)( )函數立即返回,如果它不能獲得資源,以及[available](qsemaphore.html#available)()函數,返回可用資源的數量在任何時間。 例如: ``` QSemaphore sem(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 ``` 信號量的一個典型應用是用于控制訪問環形緩沖器由一個生產者線程和消費者線程共享。該[Semaphores](index.htm)示例顯示了如何使用QSemaphore來解決這個問題。 信號量的非計算例子是在餐廳用餐。信號量與椅子在餐廳數初始化。當人們到達時,他們想要一個座位。由于座位填滿,[available](qsemaphore.html#available)( )遞減。隨著人們離開,[available](qsemaphore.html#available)( )遞增,讓更多的人進入。如果10人一方想坐下,但只有9個座位,這10人將等待,但4人一黨會坐下(以可用座位5 ,使得10人的派對等待更長的時間) 。 * * * ## Method Documentation ``` QSemaphore.__init__ (self, int?n?=?0) ``` 創建一個新的信號量并初始化它扼守資源的數量_n_(默認為0 ) 。 **See also** [release](qsemaphore.html#release)()和[available](qsemaphore.html#available)( ) 。 ``` QSemaphore.acquire (self, int?n?=?1) ``` 試圖獲取`n`資源的信號量把守。如果_n_\u003e[available](qsemaphore.html#available)( ) ,這個調用將阻塞直到有足夠的資源可用。 **See also** [release](qsemaphore.html#release)( )[available](qsemaphore.html#available)()和[tryAcquire](qsemaphore.html#tryAcquire)( ) 。 ``` int QSemaphore.available (self) ``` 返回資源的當前可用的信號的數目。這個號碼永遠不能否定的。 **See also** [acquire](qsemaphore.html#acquire)()和[release](qsemaphore.html#release)( ) 。 ``` QSemaphore.release (self, int?n?=?1) ``` 發布_n_資源的信號量把守。 此功能可用于“創造”的資源也是如此。例如: ``` [QSemaphore](qsemaphore.html) sem(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 ``` **See also** [acquire](qsemaphore.html#acquire)()和[available](qsemaphore.html#available)( ) 。 ``` bool QSemaphore.tryAcquire (self, int?n?=?1) ``` 試圖獲取`n`資源把守的信號,并成功返回True 。如果[available](qsemaphore.html#available)()\u003c_n_,這個調用會立即返回False不獲取任何資源。 例如: ``` [QSemaphore](qsemaphore.html) sem(5); // sem.available() == 5 sem.tryAcquire(250); // sem.available() == 5, returns false sem.tryAcquire(3); // sem.available() == 2, returns true ``` **See also** [acquire](qsemaphore.html#acquire)( ) 。 ``` bool QSemaphore.tryAcquire (self, int?n, int?timeout) ``` 試圖獲取`n`資源把守的信號,并成功返回True 。如果[available](qsemaphore.html#available)()\u003c_n_,這個調用會等待最多_timeout_毫秒資源變為可用。 注意:傳遞一個負數作為_timeout_相當于調用[acquire](qsemaphore.html#acquire)( ) ,即該函數將一直等待資源變為可用,如果_timeout_是負的。 例如: ``` [QSemaphore](qsemaphore.html) sem(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 ``` **See also** [acquire](qsemaphore.html#acquire)( ) 。
                  <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>

                              哎呀哎呀视频在线观看