1 一些理论基础:
信号量:又称为信号灯、旗语 用来解决进程(线程同步的问题),类似于一把锁,访问前获取锁(获取不到则等待),访问后释放锁。
临界资源:每次仅允许一个进程访问的资源。
临界区:每个进程中访问临界资源的那段代码叫临界区
进程互斥:两个或以上的进程不能同时进入关于同一组共享变量的临界区域,即一个进程正在访问临界资源,另一个进程要想访问必须等待。
进程同步主要研究如何确定数个进程之间的执行顺序和避免数据竞争的问题 即,如何让多个进程能一块很好的协作运行
2 所用到的函数
- ftok — Convert a pathname and a project identifier to a System V IPC key — 将路径名和项目标识符转换为 System V IPC 密钥
- msg_get_queue — Create or attach to a message queue — 创建或附加到消息队列
- msg_queue_exists — Check whether a message queue exists— 检查消息队列是否存在
- msg_receive — Receive a message from a message queue — 从消息队列接收消息
- msg_remove_queue — Destroy a message queue — 销毁消息队列
- msg_send — Send a message to a message queue— 向消息队列发送消息
- msg_set_queue — Set information in the message queue data structure— 在消息队列数据结构中设置信息
- msg_stat_queue — Returns information from the message queue data structure— 从消息队列数据结构返回信息
- sem_acquire — Acquire a semaphore — 获取信号量
- sem_get — Get a semaphore id— 获取信号量 ID
- sem_release — Release a semaphore — 释放信号量
- sem_remove — Remove a semaphore — 删除信号量
- shm_attach — Creates or open a shared memory segment— 创建或打开共享内存段
- shm_detach — Disconnects from shared memory segment— 断开与共享内存段的连接
- shm_get_var — Returns a variable from shared memory— 从共享内存返回变量
- shm_has_var — Check whether a specific entry exists— 检查特定条目是否存在
- shm_put_var — Inserts or updates a variable in shared memory— 在共享内存中插入或更新变量
- shm_remove — Removes shared memory from Unix systems— 从 Unix 系统中删除共享内存
- shm_remove_var — Removes a variable from shared memory— 从共享内存中删除变量
参考
php手册 : https://www.php.net/manual/zh/ref.sem.php
https://www.cnblogs.com/lishuaige/p/5428772.html
标签:queue,共享内存,信号量,Semaphore,msg,message,php,shm From: https://www.cnblogs.com/polax/p/18395619