信号量
1)为什么需要使用信号量?
因为我们的系统资源是有限的,但是系统是多任务的,所以存在多进程、多线程,可能同时需要对某一个资源进行访问,用来保证资源的有序访问。
否则会产生不可预计的结果。
2)信号量是什么东西?
信号量是一个计数值,这个值表示当前可用的资源数,这个值也是可用是一个负数,负数的话,表示的是等待的进程数量。还有一个指针,这个指针
指向等待该信号量的进程
P操作,减一操作。
V操作,加一操作。
操作属于原子操作,是不可被打断一种操作,一定要等待这个操作的完成。要包含的代码要尽量短,而且不要有循环。
3)如何使用信号量?
(1)、产生一个key值。
#include <sys/types.h>
#include <sys/ipc.h>
key_t ftok(const char *pathname, int proj_id);
pathname 这个路径必须是一个存在的、可访问的的文件
proj_id 必须是一个非零的数字,然后通过这个函数就会产生一个key_t类型的标示符。
返回值:成功就会返回 对应的key值,错误返回-1,并且可以把对应的错误码打印出来看