system v 这是我用的共享内存
//@param  int $key 共享内存的key
//@return int $shmid 共享内存的ID
$shmid = shm_attach($key);//得到共享内存的shmid值  (这行代码会分布在不同的页面)
当二个或二个以上用户同时操作这行代码时,共享内存会出错,这可能是并发引用的,
现需,当二个或二个以上用户同时操作这行代码时,共享内存要正常运行,这个问题应该如何解决,thanks

解决方案 »

  1.   

    最简单的方法是lock,串行访问
      

  2.   

    看一下sem_系列函数,手册上和shm_attach等函数在一起,
    如果你没有unix/linux上面编程经验的话,
    找一本unix/linux编程书,看其中“共享内存与信号灯”章节
      

  3.   

    $sem_id = sem_get(0791); //建信号量id
    $shmid = get_memory_shmid(0791);
    sem_acquire($sem_id);  //信号量流程开始
    ....
    sem_release($sem_id); //信息号释放