概念:
线程同步是指在多个线程并发执行时,通过一定的机制保证它们按照一定的顺序执行以达到正确的结果。
其主要目的是解决并发访问共享资源所产生的问题,确保数据的一致性和正确性。
信号量(Semaphore) :
1.用于控制对共享资源的访问数量,可以限制同时访问资源的线程数量。
2.信号量的值是一个非负整数
3.是受保护的变量,只能通过三种操作来访问:初始化、P操作、V操作
信息量特性:
p操作:申请资源
信号量的值大于0的时候,可以申请资源,申请资源后信号量的值减一
当信号量的值等于0时,申请不到资源,函数阻塞
v操作:释放资源
不阻塞,执行到释放操作,信号量的值加一;
信息量分类:
1.posix信息量:a.无名信号量 b.有名信号量
a:数据存储在内存中,通常在线程间使用或父子进程间
函数接口:sem_init\sem_wait\sem_post
b. 有名信号量:数据存储在文件中,在进程间线程间都可以使用
函数接口:sem_open\sem_wait\sem_post\sem_clo
2.System V信号量
是信号量的集合,叫信号灯集,属于IPC对象
函数接口:semget\semctl\semop