我不明白一些事情。
例如二进制信号量和锁是一样的吗?
何时使用锁和何时使用信号量,或两者兼而有之?
最佳答案
锁和二进制信号量之间的区别仅在多个进程试图访问同一资源时才明显。 “进程”在此定义为可能包含一个或多个线程的程序或应用程序的实例。
两者都只允许一个线程在给定时间访问资源。但是,锁只能限制在 单个 进程内的访问,而二进制信号量可以限制跨 多个 进程的访问。
因此,在 单进程 中,锁和二进制信号量的行为是相同的。两者都只允许一个线程在给定时间内访问资源。
在 多个进程 中,行为是不同的。二进制信号量一次只允许一个进程访问给定的资源,但锁将允许多个进程一次访问一个资源(但每个进程中只有一个线程在给定时间可以访问)。
关于multithreading - 我不明白信号量和锁之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34495352/