进程间通信-信号量-创新互联

信号量:它描述了当前某种资源的数量。它的意图在于进程间同步,就相当于一个计数器,它本身不具有数据交换的功能,而是通过控制其他通信资源来实现进程间通信。

创新互联建站长期为上千多家客户提供的网站建设服务,团队从业经验10年,关注不同地域、不同群体,并针对不同对象提供差异化的产品和服务;打造开放共赢平台,与合作伙伴共同营造健康的互联网生态环境。为和平企业提供专业的做网站、成都网站建设和平网站改版等技术服务。拥有十多年丰富建站经验和众多成功案例,为您定制开发。

当一个进程要访问临界资源时,先要进行P操作申请资源,当大于0时,资源可以请求,申请过后,若为0,则将进程挂起;当进程不再访问该信号量控制的资源时,进行V操作,若有进程挂起,则唤醒该等待的进程继续恢复访问,如果无挂起进程,就给它加1。

进程间同步:对临界资源的访问带有顺序性的,一个执行完毕,另一个才可以执行。

注意:对信号量的操作均为原子操作,因为信号量的主要作用就是维护资源的互斥或多进程的同步访问,而在信号量的初始化和创建中均不能保证其原子操作。

创建信号量:semget(key_t key,int nsems,int semflg);

P,V操作:

semop(int semid,struct sembuf* buf,unsigned nsops);//对当前信号量集上的第几个信号量进行P/V操作

释放信号量:semctl(int semid ,int semnue,int cmd)//对当前信号量集上的第几个信号量进行cmd指令操作。

union semun {

 int val; // 使用的值

 struct semid_ds *buf; // IPC_STAT、IPC_SET 使用缓存区

 unsigned short *array; // GETALL,、SETALL 使用的数组

 struct seminfo *__buf; // IPC_INFO(Linux特有) 使用缓存区

};

comm.h

进程间通信-信号量

comm.c

进程间通信-信号量

进程间通信-信号量

进程间通信-信号量

test.c
进程间通信-信号量

运行结果:

进程间通信-信号量

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


新闻名称:进程间通信-信号量-创新互联
当前路径:http://azwzsj.com/article/dccdpj.html