互斥锁与信号量

1. 互斥量用于线程的互斥,信号量用于线程的同步。多线程

这是互斥量和信号量的根本区别,也就是互斥和同步之间的区别。spa

互斥:是指某一资源同时只容许一个访问者对其进行访问,具备惟一性和排它性。但互斥没法限制访问者对资源的访问顺序,即访问是无序的。线程

同步:是指在互斥的基础上(大多数状况),经过其它机制实现访问者对资源的有序访问。在大多数状况下,同步已经实现了互斥,特别是全部写入资源的状况一定是互斥的。少数状况是指能够容许多个访问者同时访问资源资源

2. 互斥量值只能为0/1,信号量值能够为非负整数。同步

也就是说,一个互斥量只能用于一个资源的互斥访问,它不能实现多个资源的多线程互斥问题。信号量能够实现多个同类资源的多线程互斥和同步。当信号量为单值信号量是,也能够完成一个资源的互斥访问。基础

3. 互斥量的加锁和解锁必须由同一线程分别对应使用,信号量能够由一个线程释放另外一个线程获得db

这两个只能用于任务中,没法用于中断中。co

相关文章
相关标签/搜索