Linux ipc 程式設計以及執行緒同步

2021-07-08 10:35:16 字數 667 閱讀 9851

摘要:本文主要介紹管道,ystemv ipc機制,包括訊息佇列、訊號量,共享記憶體。套接字也是程序間通訊的一種機制。只是前面的機制都是在一台主機上的程序間通訊。

shmget

int shmget(key_t key, size_t size, int shm***);

建立乙個共享記憶體從key開始講起,鍵值如果是ipc_private,那麼每次都是建立乙個新的shm,也就是私有的,只有父子程序可以使用,除非把shmid傳送給其他程序。shm***只指定乙個許可權如0666,那麼就只是開啟乙個shm;如果是0666|ipc_creat,那麼就是建立乙個新的共享記憶體;0666|ipc_creat|ipc_excl,那麼就是shm存在就報錯,不存在就建立。

建立的共享記憶體資源是有系統限制的, /proc/sys/kernel/shm…

程式訪問shm時,實質訪問的是記憶體,記憶體是以頁為大小的。

shmat

shmdt

shmctl

msgget

msgctl

msgsnd

msgrcv

semget

systemv訊號量的建立是乙個訊號量集合,也就是說乙個鍵值、semid可以對應多個訊號量。這是要注意的點。

semctl

semop

p操作和v操作

Windows核心程式設計 (五)使用者模式下執行緒同步

1 原子訪問 interlocked系列函式 該系列的函式會保證對乙個值得遞增操作是原子操作,即不會被打斷。2 高速緩衝行 當cpu從記憶體中讀取乙個位元組的時候,它並不是從記憶體中取回乙個位元組,而是取回乙個高速緩衝行。高速緩衝行存在的目的是為了提高效能。一般來說,應用程式會對一組相鄰的位元組進行...

C 多執行緒程式設計以及常用方法

一 1.執行緒是什麼,為什麼使用執行緒不贅述 2.使用執行緒要引入命名空間 system.threading 3.執行緒函式通過委託 threadstart,parameterizedthreadstart 傳遞,可以不帶引數,也可以帶object引數 只能有乙個引數 可以用乙個類或結構體封裝引數。...

Java多執行緒 synchronized同步方法

synchronized同步方法是為了解決 非執行緒安全 的問題,所謂 非執行緒安全 是指多個執行緒對同乙個物件中的變數進行併發訪問時發生,產生 髒讀 的情況。非執行緒安全 問題存在於 例項變數 中,如果是方法內部的私有變數,則不存在 非執行緒安全 問題,也就是 執行緒安全 的了。demo hass...