在RedHatLinux中使用共享物件(轉)
在RedHatLinux中使用共享物件(轉)[@more@] 充分利用共享記憶體並不總是容易的。在本文中,IBM 的 Sachin Agrawal 與我們共享了他的 C++ 專門技術,展示了物件導向如何去利用一個獨特而實用的程式間通訊通道的關鍵優勢。 就時間和空間而言,共享記憶體可能是所有現代作業系統都具備的最高效的程式間通訊通道。共享記憶體 同時將地址空間對映到多個程式:一個程式只需依附到共享記憶體並像使用普通記憶體一樣使用它,就可以開始與其他程式進行通訊。 不過,在物件導向程式設計領域中,程式更傾向於使用共享物件而不是原始的資訊。透過物件,不需要再對物件中容納的資訊進行序列化、傳輸和反序列化。共享物件也駐留在共享記憶體中,儘管這種物件“屬於”建立它們的程式,但是系統中的所有程式都可以訪問它們。因此,共享物件中的所有資訊都應該是嚴格與特定程式無關的。 這與當前所有流行的編譯器所採用的 C++ 模型是直接矛盾的:C++ 物件中總是包含指向各種 Vee-Table 和子物件的指標,這些是 與特定程式相關的。要讓這種物件可以共享,您需要確保在所有程式中這些指標的目標都駐留在相同的地址。 在一個小的示例的幫助下,本文展示了在哪些情況下 C++ 模型可以成功使用共享記憶體模型,哪些情況下不能,以及可能從哪裡著手。討論和示例程式都只限於非靜態資料成員和虛擬函式。其他情形不像它們這樣與 C++ 物件模型關係密切:靜態的和非靜態非虛擬的成員函式在共享環境中沒有任何問題。每個程式的靜態成員不駐留在共享記憶體中(因此沒有問題),而共享的靜態成員的問題與這裡討論到的問題類似。 環境假定 本文僅侷限於用於 32 位 x86 Interl 體系結構的 Red Hat Linux 7.1,使用版本 2.95 的 GNU C++ 編譯器及相關工具來編譯和測試程式。不過,您同樣可以將所有的思想應用到任意的機器體系結構、作業系統和編譯器組合。 示例程式 示例程式由兩個客戶機構成:shm_client1 和 shm_client2,使用由共享物件庫 shm_server 提供的共享物件服務。物件定義在 common.h 中: 清單 1. common.h 中的定義
QUOTE:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-946601/,如需轉載,請註明出處,否則將追究法律責任。
上一篇:
幾個shell程式設計小知識(轉)
下一篇:
Linux的結構和特性深入分析(轉)
請登入後發表評論
登入
全部評論
|
相關文章
- RedHatLinux使用者管理經驗點滴(轉)RedhatLinux
- 在JavaScript中建立新物件(轉)JavaScript物件
- 在VB中使用檔案物件 (轉)物件
- 如何將oracle 物件pin在共享池中Oracle物件
- Java中一個物件在多執行緒中是共享的Java物件執行緒
- 在Delphi與C++之間實現函式與物件共享 (轉)C++函式物件
- 物件中的靜態屬性是否在多執行緒中共享物件執行緒
- 在C++Builder中建立共享記憶體段 (轉)C++UI記憶體
- 在JavaScript中,DOM物件與jQuery物件的區別與轉換JavaScript物件jQuery
- 在VB和Web頁面中使用Shell物件 (轉)Web物件
- RedHatLinux下實現MySQL資料庫映象(轉)RedhatLinuxMySql資料庫
- 值物件如何共享物件
- 在Linux中,如何配置Samba共享?LinuxSamba
- 在Linux中,如何配置NFS共享?LinuxNFS
- 使用 XPath 在 Rational Functional Tester 中動態識別物件Function物件
- 在Javascript中為String物件新增trim,ltrim,rtrim方法 (轉)JavaScript物件
- 在 JavaScript 中如何克隆物件?JavaScript物件
- [轉]在.Net中使用Oracle的表型別和物件型別Oracle型別物件
- 在.net中使用AutoMapper進行物件對映,物件相互轉,簡單方便APP物件
- 用Iptables+RedHatLinux9.0做ADSL路由器(轉)RedhatLinux路由器
- Exchange開發中CDO物件的使用基礎(1) (轉)物件
- 在ASP.NET中物件導向的程式設計思想 (轉)ASP.NET物件程式設計
- 在DELPHI程式中使用ADO物件存取ODBC資料庫 (轉)物件資料庫
- 在DWR中呼叫Http Servlet 物件HTTPServlet物件
- 在Oracle中怎樣才能使用索引(轉)Oracle索引
- 在Dreamweaver中靈活使用網頁表格(轉)網頁
- 在php中使用繫結變數的方法(Oracle SQL共享的機制)(轉)PHP變數OracleSQL
- 在單獨執行緒中執行物件成員函式 (轉)執行緒物件函式
- 在Java2環境中應用IP地址封裝物件 (轉)Java封裝物件
- 在SQL Server 2008中物件相關性的使用SQLServer物件
- 使用DBMS_SHARED_POOL包將物件固定到共享池物件
- 序列化物件(.NET中) (轉)物件
- Delphi中的類和物件 (轉)物件
- xlua中lua物件到c#物件的轉型物件C#
- Java物件在JVM中長啥樣Java物件JVM
- 在PowerShell中操作SharePoint物件物件
- 在session中儲存JSON物件SessionJSON物件
- 怎樣在C++Builder中建立使用DLL (轉)UI