<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國際加速解決方案。 廣告
                # QSharedMemory Class Reference ## [[QtCore](index.htm) module] 該QSharedMemory類提供了訪問一個共享內存段。[More...](#details) 繼承[QObject](qobject.html)。 ### Types * `enum AccessMode { ReadOnly, ReadWrite }` * `enum SharedMemoryError { NoError, PermissionDenied, InvalidSize, KeyError, ..., UnknownError }` ### Methods * `__init__ (self, QObject?parent?=?None)` * `__init__ (self, QString?key, QObject?parent?=?None)` * `bool attach (self, AccessMode?mode?=?QSharedMemory.ReadWrite)` * `sip.voidptr constData (self)` * `bool create (self, int?size, AccessMode?mode?=?QSharedMemory.ReadWrite)` * `sip.voidptr data (self)` * `bool detach (self)` * `SharedMemoryError error (self)` * `QString errorString (self)` * `bool isAttached (self)` * `QString key (self)` * `bool lock (self)` * `QString nativeKey (self)` * `setKey (self, QString?key)` * `setNativeKey (self, QString?key)` * `int size (self)` * `bool unlock (self)` * * * ## Detailed Description 該QSharedMemory類提供了訪問一個共享內存段。 QSharedMemory提供了多個線程和進程訪問共享內存段。它還提供了一種用于單個線程或進程鎖定的內存進行獨占訪問。 當使用這個類時,請注意以下平臺的差異: * Windows: QSharedMemory does not "own" the shared memory segment. When all threads or processes that have an instance of QSharedMemory attached to a particular shared memory segment have either destroyed their instance of QSharedMemory or exited, the Windows kernel releases the shared memory segment automatically. * Unix: QSharedMemory "owns" the shared memory segment. When the last thread or process that has an instance of QSharedMemory attached to a particular shared memory segment detaches from the segment by destroying its instance of QSharedMemory, the Unix kernel release the shared memory segment. But if that last thread or process crashes without running the QSharedMemory destructor, the shared memory segment survives the crash. * QNX: Due to possible race conditions in the POSIX IPC implementation, [create](qsharedmemory.html#create)() should be called prior to any [attach](qsharedmemory.html#attach)() calls (even across multiple threads). * HP-UX: Only one attach to a shared memory segment is allowed per process. This means that QSharedMemory should not be used across multiple threads in the same process in HP-UX. * Symbian: QSharedMemory does not "own" the shared memory segment. When all threads or processes that have an instance of QSharedMemory attached to a particular shared memory segment have either destroyed their instance of QSharedMemory or exited, the Symbian kernel releases the shared memory segment automatically. Also, access to a shared memory segment cannot be limited to read-only in Symbian. 記住用鎖定共享內存[lock](qsharedmemory.html#lock)( )讀取或寫入共享內存,并且前記得要與解除鎖定[unlock](qsharedmemory.html#unlock)( )請在完成后。 不像 [QtSharedMemory](http://qt.digia.com/products/add-on-products/catalog/4/Utilities/qtsharedmemory/), QSharedMemory自動銷毀共享內存段時QSharedMemory的最后一個實例被從段分離,并給段的引用仍然存在。不要混合使用 [QtSharedMemory](http://qt.digia.com/products/add-on-products/catalog/4/Utilities/qtsharedmemory/)和QSharedMemory 。端口一切QSharedMemory 。 **Warning:**QSharedMemory變化的關鍵在一個Qt特定的方式,除非另有規定。互操作與非Qt應用程序是通過首先創建一個默認的共享內存實現[QSharedMemory](qsharedmemory.html#QSharedMemory)( ) ,然后設置與本機鍵[setNativeKey](qsharedmemory.html#setNativeKey)( ) 。當使用本機鍵,共享內存是不受保護就可以了多個訪問(如無法[lock](qsharedmemory.html#lock)())和用戶定義的機制,用于實現這種保護。 * * * ## Type Documentation ``` QSharedMemory.AccessMode ``` | Constant | Value | Description | | --- | --- | --- | | `QSharedMemory.ReadOnly` | `0` | 共享內存段是只讀的。寫入共享內存段是不允許的。寫與只讀創建一個共享內存段的嘗試導致程序中止。 | | `QSharedMemory.ReadWrite` | `1` | 讀取和寫入共享內存段都是允許的。 | ``` QSharedMemory.SharedMemoryError ``` | Constant | Value | Description | | --- | --- | --- | | `QSharedMemory.NoError` | `0` | 未發生錯誤。 | | `QSharedMemory.PermissionDenied` | `1` | 操作失敗,因為調用方沒有所需的權限。 | | `QSharedMemory.InvalidSize` | `2` | 創建操作失敗,因為請求的大小是無效的。 | | `QSharedMemory.KeyError` | `3` | 操作失敗,因為一個無效的關鍵。 | | `QSharedMemory.AlreadyExists` | `4` | A [create](qsharedmemory.html#create)( )操作失敗,因為具有指定鍵的共享內存段已經存在。 | | `QSharedMemory.NotFound` | `5` | 一個[attach](qsharedmemory.html#attach)( )失敗,因為具有指定鍵的共享內存段不能被發現。 | | `QSharedMemory.LockError` | `6` | 企圖[lock](qsharedmemory.html#lock)( )的共享內存段失敗的原因[create](qsharedmemory.html#create)()或[attach](qsharedmemory.html#attach)( )失敗,返回False ,或者是因為在發生系統錯誤[QSystemSemaphore.acquire](qsystemsemaphore.html#acquire)( ) 。 | | `QSharedMemory.OutOfResources` | `7` | A [create](qsharedmemory.html#create)( )操作失敗,因為沒有足夠的可用內存來滿足該請求。 | | `QSharedMemory.UnknownError` | `8` | 別的事情發生了,這是不好的。 | * * * ## Method Documentation ``` QSharedMemory.__init__ (self, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 構造一個共享內存對象與給定_parent_并與將其鍵值設為_key_。由于其鍵設置,其[create](qsharedmemory.html#create)()和[attach](qsharedmemory.html#attach)( )函數可以調用。 **See also** [setKey](qsharedmemory.html#setKey)( )[create](qsharedmemory.html#create)()和[attach](qsharedmemory.html#attach)( ) 。 ``` QSharedMemory.__init__ (self, QString?key, QObject?parent?=?None) ``` 該_parent_的說法,如果不是沒有,原因_self_通過Qt的,而不是PyQt的擁有。 這個函數的重載[QSharedMemory](qsharedmemory.html#QSharedMemory)( ) 。 構造一個共享內存對象與給定_parent_。共享內存對象的關鍵不是由構造函數中設置,因此共享內存對象沒有一個基本的共享內存段連接。該密鑰必須與設置[setKey](qsharedmemory.html#setKey)()或[setNativeKey](qsharedmemory.html#setNativeKey)( )前[create](qsharedmemory.html#create)()或[attach](qsharedmemory.html#attach)()都可以使用。 **See also** [setKey](qsharedmemory.html#setKey)( ) 。 ``` bool QSharedMemory.attach (self, AccessMode?mode?=?QSharedMemory.ReadWrite) ``` 試圖連接的過程中確定被傳遞給構造函數或調用該密鑰的共享內存段[setKey](qsharedmemory.html#setKey)()或[setNativeKey](qsharedmemory.html#setNativeKey)( ) 。訪問_mode_ is [ReadWrite](qsharedmemory.html#AccessMode-enum)在默認情況下。它也可以是[ReadOnly](qsharedmemory.html#AccessMode-enum)。返回True如果連接操作是成功的。如果返回False ,調用[error](qsharedmemory.html#error)()來判斷發生錯誤。附加共享內存段后,一個指向共享內存可以通過調用獲得[data](qsharedmemory.html#data)( ) 。 **See also** [isAttached](qsharedmemory.html#isAttached)( )[detach](qsharedmemory.html#detach)()和[create](qsharedmemory.html#create)( ) 。 ``` sip.voidptr QSharedMemory.constData (self) ``` 返回一個const指針,指向共享內存段的內容,如果已連接。否則返回null 。記住用鎖定共享內存[lock](qsharedmemory.html#lock)( )讀取或寫入共享內存,并且前記得要與解除鎖定[unlock](qsharedmemory.html#unlock)( )請在完成后。 **See also** [attach](qsharedmemory.html#attach)()和[create](qsharedmemory.html#create)( ) 。 ``` bool QSharedMemory.create (self, int?size, AccessMode?mode?=?QSharedMemory.ReadWrite) ``` 創建一個共享內存段_size_與傳遞給構造函數的關鍵,設置字節[setKey](qsharedmemory.html#setKey)()或設置[setNativeKey](qsharedmemory.html#setNativeKey)( ) ,然后附加到給定的接入新的共享內存段_mode_并返回`true`。如果指定了密鑰的共享內存段已經存在,則不執行和附加操作`false`返回。當返回值是`false`,調用[error](qsharedmemory.html#error)()來判斷發生錯誤。 **See also** [error](qsharedmemory.html#error)( ) 。 ``` sip.voidptr QSharedMemory.data (self) ``` 返回一個指向共享內存段的內容,如果已連接。否則返回null 。記住用鎖定共享內存[lock](qsharedmemory.html#lock)( )讀取或寫入共享內存,并且前記得要與解除鎖定[unlock](qsharedmemory.html#unlock)( )請在完成后。 **See also** [attach](qsharedmemory.html#attach)( ) 。 ``` bool QSharedMemory.detach (self) ``` 從共享內存段分離的過程。如果這是附加到共享內存段的最后一個進程,那么共享內存段被釋放系統,即內容被破壞。如果分離的共享內存段的函數返回True 。如果它返回False ,這通常意味著要么沒有安裝,或者它是由其他進程鎖定的段。 **See also** [attach](qsharedmemory.html#attach)()和[isAttached](qsharedmemory.html#isAttached)( ) 。 ``` SharedMemoryError QSharedMemory.error (self) ``` [ 返回一個值,指示是否發生了錯誤,并且,如果是這樣,這是其中的錯誤。 ](qsharedmemory.html#SharedMemoryError-enum) [**See also**](qsharedmemory.html#SharedMemoryError-enum) [errorString](qsharedmemory.html#errorString)( ) 。 ``` QString QSharedMemory.errorString (self) ``` 返回上次發生錯誤的文本說明。如果[error](qsharedmemory.html#error)( )返回一個[error value](qsharedmemory.html#SharedMemoryError-enum),調用這個函數來獲取描述錯誤的文本字符串。 **See also** [error](qsharedmemory.html#error)( ) 。 ``` bool QSharedMemory.isAttached (self) ``` 如果這個過程被附加到共享內存段,則返回True 。 **See also** [attach](qsharedmemory.html#attach)()和[detach](qsharedmemory.html#detach)( ) 。 ``` QString QSharedMemory.key (self) ``` 返回指定的鍵[setKey](qsharedmemory.html#setKey)( )這個共享內存,或null鍵,如果沒有密鑰已經被分配,或者如果該段被使用[nativeKey](qsharedmemory.html#nativeKey)( ) 。關鍵是使用Qt的應用程序,以確定共享內存段的標識。 你可以找到本地的,特定的平臺,重點使用的操作系統通過調用[nativeKey](qsharedmemory.html#nativeKey)( ) 。 **See also** [setKey](qsharedmemory.html#setKey)()和[setNativeKey](qsharedmemory.html#setNativeKey)( ) 。 ``` bool QSharedMemory.lock (self) ``` 這是一個信號,通過這個進程鎖定訪問共享內存段并返回True 。如果另一個進程已鎖定該段,該功能塊,直到該鎖被釋放。然后,它獲得鎖并返回True 。如果這個函數返回False ,這意味著你已經忽略了從虛假申報[create](qsharedmemory.html#create)()或[attach](qsharedmemory.html#attach)( ) ,您所設定的關鍵[setNativeKey](qsharedmemory.html#setNativeKey)( ),或[QSystemSemaphore.acquire](qsystemsemaphore.html#acquire)( )失敗,原因是未知的系統錯誤。 **See also** [unlock](qsharedmemory.html#unlock)( )[data](qsharedmemory.html#data)()和[QSystemSemaphore.acquire](qsystemsemaphore.html#acquire)( ) 。 ``` QString QSharedMemory.nativeKey (self) ``` 返回本地,特定的平臺,關鍵這個共享內存對象。本機關鍵是所使用的操作系統,以確定共享內存段的標識。 您可以使用本機鍵訪問還沒有被創建了Qt的共享內存段,或授予非Qt應用程序共享內存的訪問。 此功能被引入Qt的4.8 。 **See also** [setKey](qsharedmemory.html#setKey)()和[setNativeKey](qsharedmemory.html#setNativeKey)( ) 。 ``` QSharedMemory.setKey (self, QString?key) ``` 設置獨立于平臺_key_這個共享內存對象。如果_key_相同的電流鍵,則函數返回而不做任何事情。 您可以致電[key](qsharedmemory.html#key)( )來檢索平臺無關的關鍵。在內部,[QSharedMemory](qsharedmemory.html)此鍵轉換成特定于平臺的關鍵。如果改為調用[nativeKey](qsharedmemory.html#nativeKey)( ) ,你會得到特定于平臺的,轉換的關鍵。 如果共享內存對象附加到底層的共享內存段,它會[detach](qsharedmemory.html#detach)從它設置新鍵之前。此功能不會做一個[attach](qsharedmemory.html#attach)( ) 。 **See also** [key](qsharedmemory.html#key)( )[nativeKey](qsharedmemory.html#nativeKey)()和[isAttached](qsharedmemory.html#isAttached)( ) 。 ``` QSharedMemory.setNativeKey (self, QString?key) ``` 設置本機,特定于平臺的,_key_這個共享內存對象。如果_key_是與當前本地密鑰,沒有做任何函數返回。如果你想要的是分配一個關鍵段,你應該調用[setKey](qsharedmemory.html#setKey)( )來代替。 您可以致電[nativeKey](qsharedmemory.html#nativeKey)( )來檢索本地密鑰。如果本機鍵已被分配,調用[key](qsharedmemory.html#key)( )將返回一個空字符串。 如果共享內存對象附加到底層的共享內存段,它會[detach](qsharedmemory.html#detach)從它設置新鍵之前。此功能不會做一個[attach](qsharedmemory.html#attach)( ) 。 如果設置了本機鍵的應用程序將不能移植。 此功能被引入Qt的4.8 。 **See also** [nativeKey](qsharedmemory.html#nativeKey)( )[key](qsharedmemory.html#key)()和[isAttached](qsharedmemory.html#isAttached)( ) 。 ``` int QSharedMemory.size (self) ``` 返回連接的共享內存段的大小。如果沒有共享內存段連接,則返回0 。 **See also** [create](qsharedmemory.html#create)()和[attach](qsharedmemory.html#attach)( ) 。 ``` bool QSharedMemory.unlock (self) ``` 發布在共享內存段鎖并返回True ,如果鎖被該進程持有。如果該段沒有被鎖定,或者如果鎖被另一個進程持有的,沒有任何反應并返回False 。 **See also** [lock](qsharedmemory.html#lock)( ) 。
                  <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>

                              哎呀哎呀视频在线观看