搜文章
推荐 原创 视频 Java开发 iOS开发 前端开发 JavaScript开发 Android开发 PHP开发 数据库 开发工具 Python开发 Kotlin开发 Ruby开发 .NET开发 服务器运维 开放平台 架构师 大数据 云计算 人工智能 开发语言 其它开发
Lambda在线 > CPP开发之家 > inux编程基础—信号量

inux编程基础—信号量

CPP开发之家 2017-10-31

信号量其实是一个计数器,多线程之间通过计数器实现多线程的并发,要使用信号量,需要包含如下头文件:

#include <semaphore.h>
//包含的接口函数为
int sem_init(sem_t *sem, int pshared, unsigned int val);
int sem_wait(sem_t *sem);
int sem_post(sem_t *sem);
int sem_destroy(sem_t *sem);

sem_init:信号量的初始化,第一个参数是要初始化的信号量,第二个参数是信号量的范围,如果为0则为进程内线程共享。val线程的初始值,也可以理解为同时支持并发几个线程

sem_wait:调用后信号量计数器减1

sem_post:调用后计数器加1

sem_destroy:调用后销毁信号量


信号量与互斥锁的区别如下:

1、信号量可以是进程内部也可以是进程间的。互斥锁只能是进程内部

2、信号量主要是资源的同步,互斥锁是资源的互斥,即:信号量如果计数器值大于0,多个线程之间就可以操作,互斥锁只要被加上,则其它线程是不能对临界区值进行修改

3、互斥要么是占用,要么是不占用,信号量可以为正整数,实现多个进程的资源同步。


互斥锁使用案例参考如下网站:http://newzol.cn/forum.php?mod=viewthread&tid=33&extra=


版权声明:本站内容全部来自于腾讯微信公众号,属第三方自助推荐收录。《inux编程基础—信号量》的版权归原作者「开发者VIP」所有,文章言论观点不代表Lambda在线的观点, Lambda在线不承担任何法律责任。如需删除可联系QQ:516101458

文章来源: 阅读原文

相关阅读

关注开发者VIP微信公众号

开发者VIP微信公众号:mlxmpublic

开发者VIP

手机扫描上方二维码即可关注开发者VIP微信公众号

开发者VIP最新文章

精品公众号随机推荐