[多线程]互斥锁与信号量的区别
互斥锁:
互斥锁是一种保护机制。上锁后其他线程不能进入保护区域的代码,直到锁被释放。
信号量:
信号量是一种同步机制。信号量的值代表可用的资源数目,当值大于0代表有可用资源,则允许继续操作,否则线程阻塞,等待可用资源。
当可用资源是1时,信号量与互斥锁基本没区别,都起保护作用。当资源数大于1,则当信号量大于0时线程都可进行操作。如果资源大于1时使用互斥锁,则就算资源数大于1时,也只能有一个线程进入操作,其余线程必须阻塞。
信号量可用于进程通信和线程通信,而互斥锁只能用于线程通信。