程序 共享記憶體

2021-09-24 10:02:22 字數 608 閱讀 5766

swoole 本身也是個多程序模型。有多個 worker 程序和 master 程序。

由於程序之間的變數時不能相互通用的。所以應該怎樣實現程序之間的通訊呢?

作業系統中實現程序通訊的方法有多種,其中一種是共享記憶體(是作業系統內比較特殊的一種記憶體,他並不依賴於任何的程序也不屬於任何程序)。

可以呼叫系統提供的系統函式來建立一片共享記憶體,並指定它的索引,通過索引,任何乙個程序都可以在這片共享記憶體中申請記憶體空間並在其中存一定的值。

舉例:當子程序 1 通過索引在共享記憶體中分配了一片記憶體 a = 1 ,在子程序 2 中同樣的可以訪問這個變數 a,並得到它的值,也可以修改 a 的值,子程序 1 可以訪問這個記憶體並得到這個修改後的值。這樣就實現了兩個程序之間的通訊。

注意:

1.共享記憶體不屬於任何乙個程序,可以通過方法被建立

2.在共享記憶體中分配的記憶體空間可以被任何程序訪問,只要這個程序擁有這片共享記憶體的索引,也就是它的 id

3.即使程序關閉,共享記憶體仍然可以繼續保留在作業系統當中(在作業系統中,通過命令 ipcs -m,可以檢視系統中的共享記憶體)

程序通訊 共享記憶體

定義 共享記憶體,就是通過核心操作,在記憶體上開闢一塊供多個程序共同訪問的記憶體塊。這塊記憶體塊的建立和 銷毀是由核心來控制 當然,也可以在程序內部呼叫系統庫函式來建立和銷毀,類似於訊息機制和訊號 量機制 在這個記憶體塊上,程序可以像操作記憶體一樣操作共享區記憶體。作用 第乙個,就是提供程序間大資訊...

程序通訊共享記憶體

共享記憶體是允許多個程序共享記憶體 共享記憶體結構 struct shmid ds struc ipc permshm perm 指向該記憶體指標 int shm segsz 共享記憶體的大小 ushort shm lkcnt 共享記憶體被鎖定的時間 pid t shm cpid 最近呼叫shomp...

程序間共享記憶體

位於系統的交換分割槽 include incude int shmget key t key,size t size,int shm ipc excl ipc creat一起使用可確保共享記憶體已存在時返回錯誤 void shmat int shm id,const void shm addr,in...