我们都知道,多线程与多进程都可以访问共享内存;但是二者访问的共享内存是有区别的,是不一样的。多个线程可以由同一进程产生,它们共享同一进程的地址空间,如果这些线程需要访问同一块内存空间,定义一个全局变量就可以满足;但多个进程之间的地址空间是相互独立的,如果多进程需要访问同一块内存,则不能使用全局变量,必须使用共享内存,而且共享内存是多进程间信息共享与交换最高效的方式。
共享内存针对多进程的访问并未提供锁机制,是允许多个任意进程(不要求具有父子关系)访问同一块内存空间的。进程可以将共享内存链接到自己的地址空间进行使用处理,也就是说如果进程A修改了共享内存中的某个变量值,进程B读取到该变量的值可能就是已经修改过的。在一个进程访问共享内存的同时,不会阻止其他进程对该共享内存的读写。为了防止整个世界处于混乱的状态,还好聪明的操作系统提供了信号量实现进程间同步,使得多进程访问共享内存时实现加锁的操作。
下面几个函数都是用于操作共享内存的:

最低0.47元/天 解锁文章
2462

被折叠的 条评论
为什么被折叠?



