程序間通訊第三章(System V IPC)

2021-06-21 16:24:10 字數 1482 閱讀 5583

1.概述

system v ipc的三種型別:

system v訊息佇列

system v訊號量

system v共享記憶體區

2.key_t鍵和ftok函式

三種型別的system v ipc使用key_t鍵作為它們的名字,key_t在標頭檔案定義,通常至少為32位整數值。

函式ftok把乙個已存在的路徑名和乙個整數識別符號轉換成乙個key_t值,稱為ipc鍵。

ftok的典型實現呼叫stat函式,然後組合以下三個值:

pathname所在的檔案系統的資訊(stat結構的st_dev成員)

該檔案在檔案系統的索引節點號(stat結構的st_ino成員)

id的低序8位(不能為0)

由此,id在ipc鍵的高序8位,st_dev的低序12位ipc在鍵的接下來的12位,st_ino的低序12位在最後

3.ipc_perm結構

核心給每個ipc物件維護乙個資訊結構,其內容跟核心給檔案維護的資訊類似。該結構以及system v ipc函式使用的較為明顯的常數值定義在標頭檔案中。

4.建立與開啟ipc通道

建立或開啟ipc物件有三個函式:msgget、semget、shmget,它們的第乙個引數型別為key_t,對於key值應用程式有兩種選擇:

呼叫ftok,給它傳遞pathname和id。

指定key為ipc_private,這將保證建立乙個新的、唯一的ipc物件。

get***函式都有乙個名為oflag的引數,這個引數可以建立乙個新的ipc物件也可以訪問乙個已存在的ipc物件,具體規則如下:

設定oflag引數的ipc_create位但不設定它的ipc_excl位,如果所指定的ipc物件不存在,就建立乙個新的物件,否則返回該物件。

同時設定oflag的ipc_create和ipc_excl位時,如果所指定鍵的ipc物件不存在,就建立乙個新的物件,否則返回乙個eexist錯誤。

5.ipc許可權

與posix的ipc許可權大體相同

6.ipcs和ipcrm程式

ipcs輸出有關system v ipc特性的各種資訊,ipcrm則刪除乙個system v訊息佇列、訊號量集或共享記憶體區。

第三章執行緒間通訊

我看書是邊看邊記錄重點,所以可能內容會有些不通順,但是肯定是按照書中記錄的順序來進行記錄的。首先介紹等待 通知機制。第一種方式是使用sleep while true 這種方式來進行,但是因為while迴圈一直跑會非常浪費cpu資源,所以雖然可以實現等待 通知,但是這種方式不太好。第二種方式就是wai...

多執行緒程式設計第三章執行緒間的通訊

join 在指定執行緒結束之後再結束 join long 等待時間到,與sleep不一樣的是,join是wait join 實現 threadlocal 使用set object 和get 各個執行緒的值不一樣,因為實現裡會去當前執行緒 inheritablethreadlocal 是特殊的thre...

第三章 堆疊

1.基礎知識 堆疊可以實現很多的應用,遞迴的問題轉化成非遞迴形式,在本質上也是堆疊的問題.它是一種 filo 操作的資料結構,一般也有兩種儲存方式 陣列跟鍊錶實現形式,這裡我給出了鍊錶形式的堆疊模板,裡面包括了基本的堆疊所有的操作,還有兩個比較著名的應用例子,時間倉促,精力比較有限,關於迷宮老鼠還沒...