Linux下執行緒使用共享記憶體方式通訊

2021-09-28 18:48:35 字數 1130 閱讀 8814

#include #include #include #include #include #include #include #define bufsz 2048

int main(int argc, char *ar**)

system("ipcs -m");

/*開啟共享記憶體*/

shmid = shmget(key, bufsz, shm_r|shm_w);

if(shmid < 0)

/*對映*/

shmadd = shmat(shmid, null, 0);

if(shmadd < 0)

/*讀共享記憶體區資料*/

printf("copy data from shared-memory\n");

printf("data = [%s]\n", shmadd);

/*分離共享記憶體和當前程序*/

ret = shmdt(shmadd);

if(ret < 0)

else

/*刪除共享記憶體*/

shmctl(shmid, ipc_rmid, null);

system("ipcs -m");

return 0;

}

#include #include #include #include #include #include #include #define bufsz 2048

int main(int argc, char *ar**)

/*建立共享記憶體*/

shmid = shmget(key, bufsz, shm_r|shm_w|ipc_creat);

if(shmid < 0)

/*對映*/

shmadd = shmat(shmid, null, 0);

if(shmadd < 0)

/*拷貝資料至共享記憶體區*/

printf("copy data to shared-memory\n");

bzero(shmadd, bufsz);

strcpy(shmadd, "data in shared memory\n");

return 0;

}

Linux下執行緒

此文講述的執行緒為linux下,其執行緒庫函式是由posix標準定義的,稱為posix thread或者pthread。在linux上線程函式位於libpthread共享庫中,因此在編譯時要加上 lpthread選項。建立執行緒 終止執行緒 等待執行緒 三個函式都為pthread.h中定義,其中要注...

Linux下執行緒實現

1.執行緒概述 程序是系統中程式執行和資源分配的基本單位。每個程序有自己的資料段 段和堆疊段。執行緒通常叫做輕型的程序。執行緒是在共享記憶體空間中併發執行的多道執行路徑,他們共享乙個程序的資源。因為執行緒和程序比起來很小,所以相對來說,執行緒花費更少的cpu資源。2.執行緒建立和退出 在linux中...

Linux 使用共享記憶體

1.共享記憶體與訊息佇列的區別 訊息佇列在實現訊息的收發時,首先由傳送程序從程序空間將資料複製到核心分配的資料緩衝區中,接受程序再從核心的緩衝區複製到程序的虛擬位址空間 共享記憶體是將核心分配的共享儲存區域對映到程序的位址空間實現的,沒有資料的複製過程,共享記憶體的訪問速度要比訊息佇列快 2.共享記...