- 论坛徽章:
- 0
|
请问fcntl函数或者其他锁函数可以锁共享内存吗
常用的同步手段就是信号量,semaphore。\r\n一般来说,进程之间都是通过 shared memory 来传输\r\n规模较大的数据,同时通过semaphore 来同步。\r\n个人认为 Posix的semaphore接口比较简洁,\r\n用来同步shared memory正合适。\r\n\r\nsem_open();\r\nsem_wait();\r\n// code to read or write shared memory \r\nsem_post();\r\n\r\n而SVR4就复杂一些了。可以找相关的材料,\r\n比如<<Unix networks programming - vol2 IPC>;>; \r\n-- written by Richard Stevens\r\n\r\n这里要注意的是,semaphore 和 shared memory 是随内核的 IPC资源,就是说在进程中把他们被建立后,进程退出,它们还依然存在,并且\r\n能够继续使用(如果允许的化),理由是创建它(们)的进程不知道其它进程是不是好要使用它们。如果想删除它们必须现实地调用删除的代码。这与PIPE, FIFO不同(它们是随进程的)。\r\n在shell中可以用命令 ipcs 看到它们,用ipcrm 删除它们。 |
|