成功源于积累----波爸

思想决定高度,行动决定成败!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

共享内存是运行在同一台机器上的进程间最快的通信方式,因为数据不需要在不同的进程间复制。

通常由一个进程创建一块共享内存区,其余进程对这块内存区进行读写。

得到共享内存有两种方式:映射/dev/mem 设备和内存映像文件。前一种方式不给系统带来额外的开销,但在现实中并不常用,因为它控制的存取将是实际的物理内存。

常用的方式是通过shmXXX函数族来实现利用共享内存进行存储的。

 

首先,要用的函数是shmget,它获得一个共享存储标识符。

    #include<sys/types.h>

    #include<sys/ipc.h>

    #include<sys/shm.h>

    int shmget(key_t key, int size, int flag);

 

当共享内存创建后,其余进程可以调用shmat()将其连接到自身的地址空间中。

     void *shmat(int shmid, void *addr, int flag);

 

使用共享存储来实现进程间通信的注意点是对数据存取的同步,必须确保当一个进程去读取数据时,它所想要的数据已经写好了。通常,信号量被要求用来实现存储数据存取的同步。

posted on 2012-06-08 21:14  沙场醉客  阅读(172)  评论(0编辑  收藏  举报