一.信号量
进化版的互斥锁(1---->N)
由于互斥锁的粒度比较大,如果我们希望多个线程间对某个对象的部分数据进行共享【类似于行锁,拥有部分是不一样的】,使用互斥锁是没有办法实现的,只能讲整个对象锁住,这样虽然保证了多个线程操作同一个共享资源数据的正确性,但同时也降低了 线程的并发程度。线程从并行执行变为串行执行,与直接用单进程操作该数据速度还要慢些,为什么呢? 因为锁 也是一种资源,上锁和 解锁 也是有开销的。
信号量是一种相对折中的方式,即能保证同步,数据不紊乱,也能保证线程/进程的并发性
二.信号量的主要应用函数
sem _init,函数
sem_destroy函数
sem_wait函数