二十三、sem(信号量API)
1、作用:当多个进程/线程进行共享操作时,用于资源保护(互斥+同步操作),以防止出现相互干扰情况,解决方法->加锁。
注:互斥:该进程在操作时其他进程不能操作,不关心操作的顺序问题;
同步:多个共享操作时,进程必须要有统一操作的步调,按照一定的顺序来操作。
2、信号量的使用步骤:
(1)进程调用semget函数创建新的信号量集合,或者获取已有的信号量集合;
(2)调用semctl函数给集合中的每个信号量设置初始值;
(3)调用semop函数,对集合中的信号量进行p、v操作(加锁解锁);
p操作(加锁):对信号量的值进行-1,如果信号量的值为0,p操作就会阻塞。