同步
同步,併發性不高;例如主函式中有子函式,子函式呼叫子函式,這樣會一直呼叫函式,阻塞等待的過程。非同步> 併發性高,例如多程序、多執行緒。
一旦裝置準備好,就主動通知應用程式,這種情況下應用程式就不需要查詢裝置狀態;非同步是相對於同步而言,兩個程序之間不影響,例如fork乙個程序程序同步機制pipe、fifo、訊號量(二值訊號量)、共享類存、訊息佇列、以及socket程式設計執行緒同步機制互斥鎖、條件變數、讀寫鎖、訊號量非同步機制:訊號是程序間通訊機制中唯一的非同步通訊機制;訊號驅動的非同步i/o,epoll是一種高效處理io的非同步宣告:
訊號量:訊號量是乙個整數值。單獨使用沒用,必須和資源結合,例如印表機、共享記憶體1、包裹函式1、包裹函式2、key值
3、semget
4、semctl
5、semop
6、常用命令
對函式的簡單包裝,是程式看起來比較簡潔,通常將函式名的第乙個字母大寫即可2、key值//對semget()進行包裹
key_t ftok(const
char * pathname,int pro _id)
return key;
}
key值又稱ipc鍵值,利用ftok函式來獲得乙個key,具有唯一性3、semget 開啟、建立ipc//路徑名 專案id
ket_t ftok(const
char * pathname,int proj_id);
建立乙個訊號量集,或訪問已存在的訊號量集4、semctl//ipc鍵值 訊號量集合(陣列) ipc_creat|ipc_excl|0755
int semget(key_t key,int nums,int oflag);
對訊號量進行各種操作,獲取訊號量的值、設定訊號量的值、刪除訊號量5、semop// id 訊號量集合下表 getval setval ipc_rmid
int semctl(int semid,int semmum,int cmd...)
對訊號量的操作,例如加減//結構體使用時,直接定義結構體型別的物件即可// id 結構體的位址 陣列元素個數 number
int semop(int semid,struct sembuf *opsptr,siez_t nops);
//聯合體使用時,必須宣告聯合體型別,才可以定義物件
6、常用命令struct sembuf
;
1、ipcs -s 檢視訊號量2、ipcrm -s id 刪除訊號量
結果:1
#include
2#include
3#include
4#include
5#include
6int main()
7 14else
15printf("key =%x\n",key);
16//獲取id號
17int sem_id = semget(key,1,ipc_creat|0755);
18if(sem_id == -1)
19
23else
24printf("sem_id = %d\n",sem_id);
25//set init val
26union semun
27 ;
//初始化
33union semun info;
34 info.val = 3;
35int re=semctl(sem_id,0,setval,info );
36if(re == -1)
37
40else
41printf("init val success.\n");
42//get val
43int res = semctl(sem_id,0,getval);
44if(res == -1)
45
48else
49printf("val =%d\n",res);
50//op sem
51struct sembuf op;
52 op.sem_num = 0;
53 op.sem_op = 2;
54 op.sem_*** = 0;
55int value;
56 value= semop(sem_id,&op,1);
57if(value == -1)
58
61else
62printf(" semop success.\n");
6364
65//get val
66 res = semctl(sem_id,0,getval);
67if(res == -1)
68
71else
72printf("val =%d\n",res);
73//ipsrm
74 res = semctl(sem_id,0,ipc_rmid);
75if(res == -1)
76
79else
80printf("remove sem success\n");
8182
return
0; 83 }
同步機制與非同步機制的理解
同步機制與非同步機制的理解 同步機制即在進行輸入輸出時,必須等待輸入輸出完畢後,才能進行後面的操作。非同步傳輸機制就不必等待完畢就可進行其它操作。網路上有乙個比較通俗的例子 請吃飯 同步就是我叫你吃飯,你聽到了就立刻跟我去,若你沒有反應,那我就不停的叫你,直到你回應。同步的特點是我不能做其他任何的事...
執行緒同步和非同步區別 非同步機制
1 區別同步和非同步乙個程序啟動的多個不相干執行緒,它們相互之間關係為非同步。舉個簡單的例子 就是遊戲,遊戲會有影象和背景 這裡的影象和聲音就分別是不同的執行緒 影象一般是主線程 背景 是守護執行緒 守護執行緒就是主線程結束的時候守護執行緒也結束 像這樣的組合就是非同步執行緒 兩個執行緒之間沒什麼關...
同步與非同步
同步執行模式 所謂同步執行模式,是指語句在同步執行模式下,將始終保持對程式流的控制,直至 程式結束。如查詢操作,客戶機上的應用程式在向伺服器發出查詢操作的指令後,將 一直等待伺服器將查詢結果返回客戶機端,然後才繼續進行下一步操作。眾所周知,應用程式要從乙個大表中刪除所有的記錄將是非常耗時的,如果應用...