我不明白信号量和锁之间的区别

I don't understand difference between semaphore and lock

有些事情我不明白。 例如二进制信号量和锁是一样的吗? 什么时候使用锁,什么时候使用信号量,或者两者都使用?

只有当有多个进程试图访问同一资源时,锁和二进制信号量之间的区别才明显。 "process" 在这里定义为可能包含一个或多个线程的程序或应用程序的实例。

两者都只允许一个线程在给定时间访问资源。但是,锁只能限制 单个 进程内的访问,而二进制信号量可以限制跨 多个 进程的访问。

因此,在单个进程中,锁和二进制信号量的行为是相同的。两者都只允许一个线程在给定时间内访问资源。

多个进程,行为是不同的。二进制信号量一次只允许一个进程访问给定资源,但是锁一次允许多个进程访问资源(但每个进程中只有一个线程在给定时间可以访问)。